如何对在Java中实现Iterable <v>的类进行排序?

时间:2016-02-23 03:09:47

标签: java

我要排序的类实现了接口Iterable<V>

我问这个,因为最常用的Collection.sort()无法在这里工作。

3 个答案:

答案 0 :(得分:3)

我认为您对IterableComparable感到困惑。目标完全不同。您可以在java api上检查每个接口的目标。

无论如何,如果您想使用Collections.sort对列表中的元素进行排序/排序,您必须使用同时接收比较器的方法。

使用Collections.sort(List, Comparator)代替Collections.sort(List)

如何向用户Comparator办理登机手续Comparator API

答案 1 :(得分:2)

试试这个。

public class SomeIterable<V extends Comparable<V>> implements Iterable<V> {
    @Override public Iterator<V> iterator() { ..... }
}

    Iterable<String> iterable = new SomeIterable<String>();
    // ...
    List<String> sorted = StreamSupport.stream(iterable.spliterator(), false)
        .sorted()
        .collect(Collectors.toList());

答案 2 :(得分:0)

要对对象集合进行排序,您需要将它们作为Comparable而不是Iterable。实现与比较逻辑可比较或创建专用的比较器。