0

奇怪的是,我有一种使用 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新手问这个。

4

3 回答 3

2

当你执行这一行时,你count0得到0 + 0

count += (policyNumberDly.contains(policyNumber)) ? count : 0;

使固定:

count += (policyNumberDly.contains(policyNumber)) ? 1 : 0;
于 2013-04-02T15:59:35.173 回答
1

我建议,如果您需要调用方法 contains,请使用 anLinkedHashset而不是ArrayList.

调用将在恒定时间内进行,而不是 O(n)。

于 2013-04-02T16:02:45.707 回答
1
   System.out.println(policyNumberDly.contains(policyNumber) ? 1 :0);

它打印 1 所以状态 count=1;

于 2013-04-02T16:03:01.203 回答