我要排序的类实现了接口Iterable<V>
。
我问这个,因为最常用的Collection.sort()
无法在这里工作。
答案 0 :(得分:3)
我认为您对Iterable
和Comparable
感到困惑。目标完全不同。您可以在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。实现与比较逻辑可比较或创建专用的比较器。