【发布时间】:2016-03-31 20:02:36
【问题描述】:
现在我有类似的东西:
boolean areListsDifferent = (list1.size() == list2.size()) ? false : true;
for(String string : list1){
if(!list2.contains(string.toLowerCase())){
// This sucks because it assumes list2 is all lower case,
// which is probably true but presumptuous
areListsDifferent = true;
}
}
return areListsDifferent;
这似乎有点冗长,而且我真的不想假设第二个列表都是小写的。这使得它对未来的变化更加脆弱。
有没有更好的方法?
【问题讨论】:
-
equalsIgnoreCase()似乎是您正在寻找的东西。 -
List是一个有序元素的集合。两个列表通常只有在排序匹配时才相同,并且您的代码会忽略顺序。这是你的意图吗? -
您假设没有重复项。例如
A, b, b, b将匹配a, a, b, b或a, B, B, B -
由于您在检查列表的大小后没有返回,因此即使您已经确定它们不同,您也将遍历这两个列表。在尺寸检查后贴上退货声明。
-
顺序无关紧要。重复也不重要。对于这种情况,当列表功能相同时返回 true 只是意味着幂等操作被浪费地运行,所以这没什么大不了的。唯一重要的是,如果列表不同,则永远不要返回 true。