arraylist.contains(string)不评估字符串

时间:2013-04-02 15:57:07

标签: java string arraylist contains evaluate

奇怪的是,我有一种感觉,我在这里错过了使用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新手问这个。

3 个答案:

答案 0 :(得分:2)

当您执行此行时,count0,因此您获得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;