对字符串的迭代器进行排序

时间:2013-05-08 06:59:33

标签: java

我有一个字符串迭代器。

对于排序,我需要从中创建一个列表并使用Collections.sort(list)对其进行排序。

有没有简单的方法来对迭代器进行排序。

3 个答案:

答案 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。它们是已经排序的集合。