我有一个字符串迭代器。
对于排序,我需要从中创建一个列表并使用Collections.sort(list)
.
有没有简单的方法来对迭代器进行排序。
Iterator 不是容器,它是用于遍历容器元素的实用程序。因此,如果您只能访问迭代器,则无法更改由该迭代器的创建者定义的迭代顺序。
如果您无法更改原始容器,则必须将迭代器传递的元素收集到一个新的 Collection 中并在其中对它们进行排序。
(了解迭代器可能实现的一个好方法是查看 JDK 类的源代码或实现自己的迭代器)
实际上你不能,因为迭代器不是一个集合。
如果很明显,你可以做
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();
}
}
使用 TreeSet 或 TreeMap。它们是已经排序的集合。