【发布时间】:2012-05-23 06:17:15
【问题描述】:
您好,我在两个列表中进行常用计数。
这是我的代码。
public static int getMatchCount(List<String> listOne, List<String> listTwo) {
String valueOne = "";
String valueTwo = "";
int matchCount = 0;
boolean isMatchedOnce=false;
for (int i = 0; i < listOne.size(); i++) {
valueOne = listOne.get(i);
isMatchedOnce=false;
if (StringUtils.isBlank(valueOne))
continue;
for (int j = 0; j < listTwo.size(); j++) {
valueTwo = listTwo.get(j);
if (StringUtils.isBlank(valueTwo))
continue;
if (valueTwo.equals(valueOne) && (!isMatchedOnce)) {
matchCount++;
listOne.set(i, "");
listTwo.set(j, "");
isMatchedOnce=true;
}
}
}
return matchCount;
}
for ex
listone listTwo
A A
A B
B
那么结果是 2 而不是 3
因为它们是我们可以取出的唯一两个常见的对。
但是这个方法很慢 对上述方法的任何改进都可以使它更快。
【问题讨论】:
-
您想计算两个列表中的共同元素。我说的对吗?