2013-11-13 3 views
0

Я использую парсер jsoup для извлечения тегов привязки, а затем просто добавляю ссылки на хеш-набор. Код выглядит следующим образомHashset повторяющиеся значения, но у меня нет пользовательских объектов

Проводя весь мой код. Я понимаю, что проблема связана с тем, что я использую toString, и значение изменится. Моя цель - когда я получаю кучу ссылок, я хочу исключить такие ссылки, как http://cse.syr.edu и http://cse.syr.edu/, чтобы мой хэш-набор содержал уникальные элементы. Как я мог это сделать

for (Element link : links) 
{ 
     String test=link.attr("abs:href"); 

     if(!(link.attr("abs:href").contains("http://cse.syr.edu"))) 
      continue ; 
     else if(h.isEmpty()){ 
      h.add(test); 
     } 
     else if(h.contains(test) || h.contains(test+"/")) // I now removed (test+"/") 
      continue; 
     else { 

     h.add(test); 

}

Я обновил мой вопрос теперь благодаря RJ

+0

Можете ли вы опубликовать образец ввода-вывода, потому что AFAIK, 'Set' будет выполнять свою работу должным образом, если только его не испортили. – SudoRahul

+1

'HashSet' не может содержать дубликаты. проверьте и убедитесь, что ваши клавиши верны. – yamafontes

+1

do 'System.out.println (h);' и показать результат, это поможет ответить на этот вопрос. – Barun

ответ

5

Там, наверное, пробел в ваших строках. HashSet работает отлично.

+0

(И String.equals/hashCode работают нормально.) – user2864740

+0

@kayaman чувак вам повезло с 4 голосами ...;) не отставайте – Barun

1

Если речь идет о java.util.HashSet, наиболее вероятным объяснением является то, что ваш диагноз проблемы неверен. Убедитесь, что строки в наборе действительно идентичны (и не совсем разные), и что вы случайно не создаете или не очищаете HashSet между добавлением идентичных строк.

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