2016-05-06 5 views
-3

Я хочу удалить полную строку, которая дублирует. Я использовал Hashmap для удаления дубликатов в arraylist, но он все еще дублирует. Пожалуйста, помогите мне. Заранее спасибо.Как удалить дубликаты в arraylist

ArrayList<Act2010> act2010DataList = AtusAct2010Parser.hm; 
    ArrayList<Who2010> whoList = AtusWho2010Parser.hm; 
    HashMap<String, AtusRecords> hm = new HashMap<String, AtusRecords>(); 
    for(int i=0; i<whoList.size(); i++){ 
     hm.put(whoList.get(i).getStringId(), whoList.get(i)); 
    } 
    for(int i=0; i<act2010DataList.size(); i++){ 
     hm.put(act2010DataList.get(i).getStringId(), act2010DataList.get(i)); 
    } 
    Iterator<String> it = hm.keySet().iterator(); 

    while(it.hasNext()){ 
     String key = it.next(); 
     AtusRecords record = hm.get(key);} 
+3

Используйте 'Set' ... – MadProgrammer

+0

Используйте Set https://docs.oracle. com/javase/7/docs/api/java/util/Set.html – Balram

+0

[Самый простой способ преобразования списка в набор? - Java] (http://stackoverflow.com/questions/1429860/easiest-way-to-convert-a-list-to-a-set-java) – MrSimpleMind

ответ

1

Более естественный способ избежать/фильтра дубликатов используют Set, он может работать с любыми примитивными или даже пользовательскими объектами реализации Equals():

List<String> myListWithDuplicates = new ArrayList<String>(); 
myListWithDuplicates.add("apple"); 
myListWithDuplicates.add("peach"); 
myListWithDuplicates.add("mango"); 
myListWithDuplicates.add("banana"); 
myListWithDuplicates.add("apple"); 
myListWithDuplicates.add("apple"); 

List<String> listWithoutDuplicates = new ArrayList<String>(new HashSet<String>(myListWithDuplicates)); 


System.out.println("list with duplicates: "+ myListWithDuplicates); 
System.out.println("List without duplicates: "+ listWithoutDuplicates); 

пользуется

0

I думаю, у вас есть arraylist like

("A", "1"); 
 
    ("B", "2"); 
 
    ("C", "2"); 
 
    ("A", "1"); 
 
    ("C", "3");

И Ваш ответ будет похож,

("A", "1"); 
 
    ("B", "2"); 
 
    ("C", "2"); 
 
    ("C", "3");

ArrayList<T> original = ... 
 
List<T> uniques = new ArrayList<T>(); 
 
for (T element : original) { 
 
    if (!uniques.contains(element)) { 
 
    uniques.add(element); 
 
    } 
 
}

+0

Мой аррайалист подобен («A», «1») («A», «1»), («A», «3») («A», «4»). Поэтому я хочу удалить дублированный значение, которое 1. – learner

+0

Я хочу ответить так («A», «1»), («A», «3») («A», «4»). – learner

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