如何确定包含多个最大结果的集合?

时间:2012-11-17 15:44:35

标签: java collections

List<Integer> list;
java.util.Collections.max(list)

如何确定列表中是否包含多个最大结果?所以说:如果我找到了最大值,我怎样才能确保这是集合中的唯一条目?

由于

2 个答案:

答案 0 :(得分:10)

Integer max = Collections.max(list);
boolean containsMultipleMax = (list.indexOf(max) != list.lastIndexOf(max));

答案 1 :(得分:2)

我会避免使用Collections.max()。只需编写自己的方法。否则,你遍历集合两次:一次是max(),一次是'看'所有元素,第二次是indexOf()+ lastIndexOf()。

boolean containsMultipleMax;
Iterator<Integer> i = list.iterator();
Integer max = i.next();

while (i.hasNext()) {
    Integer next = i.next();
    final int cmp = next.compareTo(max);
    if (cmp > 0) {
        max = next;
        containsMultipleMax = false;
    } else if (cmp == 0) {
        containsMultipleMax = true;
    }
}

显然,这取决于你收藏的大小...如果它低于1M,那就忽略我;)。