奇怪的是,我有一种感觉,我在这里错过了使用ArrayList.contains(Object o)的东西,但是现在还没有找到我,有人能指出我正确的方向吗?
我有两个包含值列表的ArrayList。我想比较它们并得到文件中匹配的计数,所以我这样做了:
ArrayList<String> policyNumbersBene = new ArrayList<String>();
policyNumbersBene.add("YOOHOO");
ArrayList<String> policyNumberDly = new ArrayList<String>();
policyNumberDly.add("YOOHOO");
int count = 0;
for (String policyNumber : policyNumbersBene) { // compare 2 arraylists to each other.
count += (policyNumberDly.contains(policyNumber) ? count : 0;
}
'SYSO'(count);
我相信我应该在计数器的输出中得到1,但我每次都得0。当我在那里打了一个调试器时,我可以看到数组中的值列表,我在那里看到“YOOHOO”。有人可以指出我做错了什么吗?我觉得这是一个完整的java新手问这个。
答案 0 :(得分:2)
当您执行此行时,count
为0
,因此您获得0 + 0
count += (policyNumberDly.contains(policyNumber)) ? count : 0;
修正:
count += (policyNumberDly.contains(policyNumber)) ? 1 : 0;
答案 1 :(得分:1)
我建议,如果您需要调用方法包含,请使用LinkedHashset
而不是ArrayList
。
呼叫将是恒定时间而不是O(n)。
答案 2 :(得分:1)
System.out.println(policyNumberDly.contains(policyNumber) ? 1 :0);
它打印1,因此状态计数= 1;