我最近发布了这个问题,我想我对LinkedList感到困惑。 我认为整个目的是能够按 randon 顺序添加信息,并能够按排序顺序将其拉出。
所以,如果我有以下代码:
import java.util.*;
class Playground {
public static void main(String[ ] args) {
LinkedList<Integer> l = new LinkedList<>();
l.add(3);
l.add(9);
l.add(1);
l.add(5);
//Iterator<Integer> i = ( Iterator<Integer>)((LinkedList<Integer>)l).descendingIterator();
//Iterator<Integer> i = l.descendingIterator();
//while (i.hasNext()) {
// System.out.println(i.next());
//}
while (l.descendingIterator().hasNext()) {
System.out.println(l.descendingIterator().next());
}
}
}
或者这个的某个版本..(如您所见,我已经尝试了一些...我希望看到这个结果:
9
5
3
1
- 我做错了什么?
- 我应该如何修复代码?
- 有没有更好的解决方案?
在这里的议程是保持我添加的排序,类似于 B 树。
这是满足我需求的解决方案。
import java.util.*;
class Playground {
public static void main(String[ ] args) {
TreeSet<Integer> l = new TreeSet<>();
l.add(3);
l.add(9);
l.add(1);
l.add(5);
//Iterator<Integer> i = ( Iterator<Integer>)((LinkedList<Integer>)l).descendingIterator();
//Iterator<Integer> i = l.descendingIterator();
//while (i.hasNext()) {
// System.out.println(i.next());
//}
System.out.println(l.pollLast());
}
}
根据 API:
按反向顺序返回此双端格式元素的迭代器
如果要对列表进行排序,则需要通过Collections.sort(....)
对其进行实际排序,或使用排序的集合(如 Tree(。
descendingIterator
并不是方法的最佳名称。它以相反的顺序(从列表的末尾到开头(遍历列表。
如果您希望按实际降序排列值,则需要先对列表进行排序:
Collections.sort(l);