我有一个字符串迭代器。
对于排序,我需要从中创建一个列表并使用Collections.sort(list)
对其进行排序。
有没有简单的方法来对迭代器进行排序。
答案 0 :(得分:14)
Iterator不是容器,它是用于遍历容器元素的实用程序。 因此,如果您只能访问Iterator,则无法更改此迭代器的创建者定义的迭代顺序。
如果无法更改原始容器,则必须在新集合中收集迭代器提供的元素并对其进行排序。
(理解迭代器可能性的一个好方法是查看JDK类的源代码或实现自己的迭代器)
答案 1 :(得分:6)
实际上你不能,因为Iterator不是Collection。
如果很明显,你可以
public static Iterator sortedIterator(Iterator it, Comparator comparator) {
List list = new ArrayList();
while (it.hasNext()) {
list.add(it.next());
}
Collections.sort(list, comparator);
return list.iterator();
}
}
答案 2 :(得分:-2)
使用TreeSet或TreeMap。它们是已经排序的集合。