Map<String, Integer> successors = new HashMap <String, Integer> ();
// I have added some elements into the successors.
Collection<Integer> uniqueValues = successors.values();
有没有办法让我在java中找到uniqueValues可以告诉我其中的所有值是否相同?
我计划使用if(uniqueValues.contains(1))
语句。但我无法理解。由于如果存在1,则该语句将为真,并且还存在不同于1的其他值。如果1是集合中唯一的值,我只想让它返回true。
eg; {1,1,1,1,1,1,1,1,1,1,1,1,1} should return true.
But {1,2,1,3,1,4,2,4,22,1,1,1,4} should return false.
一些代码沿着“包含当前和仅当。”
这将是非常有帮助的。提前谢谢。
答案 0 :(得分:2)
以CPU时钟浪费的方式做到:
if(new HashSet(successors.values()).size()>1) {...}
答案 1 :(得分:1)
某种Set
听起来像最简单的解决方案
if(new HashSet<Integer>(successors.values)).size() == 1)
由于Set
只能包含唯一值,因此具有相同值的输入集合的逻辑结果是大小为1的Set
。或者您当然可以介绍自己的util方法来检查这种情况。
答案 2 :(得分:1)
嗯,你可以做这样的事情(效率低下),
boolean uniqueValues = new HashSet<Integer>(successors.values()).size() == 1;
由于每次都会检查每个值,因此可能会采用更有效的方法,
boolean uniqueValues = true;
Collection<Integer> values = successors.values();
Iterator<Integer> iter = values.iterator();
if (iter.hasNext()) {
int t = iter.next();
while (iter.hasNext()) {
int i = iter.next();
if (t != i) {
// stop if we find a different value
uniqueValues = false;
break;
}
}
}