我正在寻找一种在运行时找出集合是否已排序的方法。有没有办法做到这一点?
编辑:我很抱歉问错了问题。我的意思是是否有一些通用的方法可以说 HashMap 不存储被插入元素的顺序,而 LinkedHashMap 可以。
对于实现Comparable接口的元素,您可以检查它们是否按“自然”顺序排列。
public static <T extends Comparable<? super T>> boolean isOrdered(Iterable<T> list) {
Iterator<T> i = list.iterator();
if (i.hasNext()) {
T previous = i.next();
while (i.hasNext()) {
T current = i.next();
if (previous.compareTo(current) > 0)
return false;
previous = current;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
否则,您必须定义一个Comparator可以根据您对订单的定义来比较您的对象,并将其传递给测试。
public static <T> boolean isOrdered(Iterable<T> list, Comparator<? super T> c) {
Iterator<T> i = list.iterator();
if (i.hasNext()) {
T previous = i.next();
while (i.hasNext()) {
T current = i.next();
if (c.compare(previous, current) > 0)
return false;
previous = current;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1695 次 |
| 最近记录: |