2013-04-02 1 views
0

Как ни странно, у меня такое чувство, что я что-то пропускаю с помощью ArrayList.contains (Object o), но это не подходит мне прямо сейчас, может кто-нибудь указать мне в правильном направлении?arraylist.contains (string) не оценивая строку

У меня есть два массива 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

Первая итерация, 'count + = count' => 0; –

+0

OMG Я такой идиот ... чувак, +1 для тебя .... Я не могу поверить, что я пропустил это ... :: Face palm :: – ResourceReaper

+1

Как можно было бы (ifName (policyNumberDly.equals (policyNumber)) 'ever return true, потому что это не экземпляры одного класса (' ArrayList 'vs' String')? – sp00m

ответ

2

При выполнении этой линии, count является 0 так что вы получите 0 + 0

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

Fix:

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

Я не могу поверить, что я пропустил это ... Похоже, я выбрал исключение id10t где-то в выходные и никогда не восстанавливался. – ResourceReaper

+1

Мы все были там, Джош. –

1

Я хотел бы предложить, если нужно вызывает метод содержит, использовать LinkedHashset вместо ArrayList.

Звонок будет в постоянное время вместо O (n).

+0

Я действительно пробовал это решение, и он работал намного быстрее (12 секунд), чем сравнение ArrayLists. Спасибо, что поднялись! – ResourceReaper

1
System.out.println(policyNumberDly.contains(policyNumber) ? 1 :0); 

it prints 1 so state count = 1;

 Смежные вопросы

  • Нет связанных вопросов^_^