List<Integer> list;
java.util.Collections.max(list)
如何确定列表是否包含多个最大结果?所以说:如果我找到最大限度,我如何确保这是集合中唯一的条目?如何确定包含多个最大结果的集合?
感谢
List<Integer> list;
java.util.Collections.max(list)
如何确定列表是否包含多个最大结果?所以说:如果我找到最大限度,我如何确保这是集合中唯一的条目?如何确定包含多个最大结果的集合?
感谢
Integer max = Collections.max(list);
boolean containsMultipleMax = (list.indexOf(max) != list.lastIndexOf(max));
这是从第一个找到的最大值和最后找到的值生成一个布尔值。正确吗? –
@JamesPoulson:是的,就是这样。 –
它从列表的开头开始查找列表中最大值的位置。它从列表的末尾开始查看列表中最大值的位置。如果两个找到的索引不匹配,则最大值至少在列表中两次。如果它们匹配,则列表中的最大值只有一次。 –
我会避免使用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,就忽略我;)。
你是说,它没有重复? –
请给我一些背景吗?根据您的需要,Set可能更适合或不适合。 –