我是Java的新手,我希望将一个列表添加到BinarySearchTree
中,其中Integer为Key,List为value。
所以我需要一个列表的每个元素,我想添加并添加到BST。
我使用BST是因为我需要用密钥对它进行排序。
在类Group中,我有一个名为getNumber()
的方法,它返回该组中的数字os元素,键将是组的元素数。
现在我有这个,我不知道如何继续。
groups.iterator()
只是迭代列表的每个组。
orderedGroups是BinarySearchTree <Integer, List<Group>>()
。
编辑: 我有这个。
public Iterator<Entry<Integer, List<Group>>> listWarriors() throws NoGroupsException {
if(!isThereGroup())
throw new NoGroupsException();
Iterator<Entry<String, Group>> it = groups.iterator();
List<Group> listGroup = new DoublyLinkedList<Group>();
int j = 0;
while(it.hasNext()) {
listGroup.add(j, it.next().getValue());
j++;
}
for(int i = 0; i<j; i++) {
List<Group> list = orderedGroups.find(listGroup.get(i).getNumber());
if(list == null) {
list = new DoublyLinkedList<Group>();
list.addFirst(listGroup.get(i));
orderedGroups.insert(-(listGroup.get(i).getNumber()), list);
}
else {
if(list.equals(listGroup.get(i))) {
list.addFirst(listGroup.get(i));
}
}
}
return orderedGroups.iterator();
}
OrderedDictionary&gt; orderedGroups = new BinarySearchTree&gt;();
通过这样做添加了一个组。
public void addGroup(String idGrupo, String nome) throws GroupAlreadyExistsException {
if(searchGroup(idGrupo))
throw new GroupAlreadyExistsException();
group = new GroupClass(idGrupo, nome);
groups.insert(idGrupo.toLowerCase(), group);
}
我在一个名为System的类中拥有所有这些。
答案 0 :(得分:0)
看起来您认为必须滚动自己的迭代器才能枚举列表。没必要。
我无法确切地告诉你这里要做什么,但也许下面的内容会有所帮助,这只是演示了如何迭代列表。
void addListToGroup(List<Foo> myList, List<group> myGroups) {
for (Foo foo : myList) {
Object value=myList.someFunction();
Group newGroup = new Group(value);
myGroups.add(newGroup);
}
}
答案 1 :(得分:0)
我不确定我完全理解你要做什么,以及为什么你没有使用LinkedList和TreeMap,但我在你的代码中看到了一些问题:
更新:
如果你这样做会怎么样:
Iterator<Entry<String, Group>> it = groups.iterator();
while (it.hasNext()) {
Group group = it.next();
List<Group> list = orderedGroups.find(group.getNumber());
if (list == null) {
list = new DoublyLinkedList<Group>();
list.addFirst(group);
orderedGroups.insert(group.getNumber(), list);
} else {
list.addFirst(group);
}
}