2013-05-04 2 views
0

У меня есть ArrayList, что я заполняю вещи, которые я печатаю, чтобы убедиться, что я не повторяю одну и ту же строку. Я использую .Contains() метод, чтобы проверить:Почему arraylist.contains() не работает?

if(!outputted.contains(string)){etc...} 

Я побежал отладчик Eclipse, когда он по-прежнему печатаются повторы, и я увидел, что даже тогда, когда ArrayList действительно держит строки, он все еще читает, если заявление как будто это не так. Я очень смущен, почему это происходит. Любые советы или предложения были бы весьма признательны.

+6

Не могли бы вы выслать полный код, пожалуйста? – Antimony

+4

Добро пожаловать в StackOverflow! Мы высоко ценим усилия, чтобы попытаться показать короткую версию вашего кода, но этот пример слишком короткий. Пожалуйста, прочитайте [эти рекомендации] (http://sscce.org/) – durron597

+3

Скорее всего, у вас нет одинаковой строки там дважды, у вас есть две строки, которые просто очень похожи. – GJK

ответ

2

Зачем вам нужно проверять?

Лучше вы можете использовать HashSet.

Пример кода:

ArrayList arrayList = new ArrayList(); 
HashSet hashSet = new HashSet(); 
hashSet.addAll(arrayList); 
arrayList.clear(); 
arrayList.addAll(hashSet); 
6
if(!outputted.contains(string)){etc...} 

Тело, если оператор будет выполняться, только если строка не в ArrayList. Что вы можете сделать, это попробовать то же самое, если условие, но без ! так:

if(outputted.contains(string)){etc...} 

Однако без остальной части кода его трудно сказать, если это действительно проблема.