563 Stimmen

Wie kann ich wiederholte Elemente aus ArrayList entfernen?

Ich habe eine ArrayList<String> und ich möchte wiederholte Zeichenfolgen daraus entfernen. Wie kann ich das tun?

30voto

infoj Punkte 641

Java 8 Streams bieten eine sehr einfache Möglichkeit, doppelte Elemente aus einer Liste zu entfernen. Mit der distinct-Methode. Wenn wir eine Liste von Städten haben und Duplikate aus dieser Liste entfernen wollen, kann dies in einer einzigen Zeile geschehen -

 List<String> cityList = new ArrayList<>();
 cityList.add("Delhi");
 cityList.add("Mumbai");
 cityList.add("Bangalore");
 cityList.add("Chennai");
 cityList.add("Kolkata");
 cityList.add("Mumbai");

 cityList = cityList.stream().distinct().collect(Collectors.toList());

Entfernen doppelter Elemente aus einer Arrayliste

30voto

Nenad Bulatović Punkte 6948

Sie können es auch so machen und die Ordnung bewahren:

// delete duplicates (if any) from 'myArrayList'
myArrayList = new ArrayList<String>(new LinkedHashSet<String>(myArrayList));

28voto

stbn Punkte 405

Hier ist eine Möglichkeit, die Ihre Listenreihenfolge nicht beeinträchtigt:

ArrayList l1 = new ArrayList();
ArrayList l2 = new ArrayList();

Iterator iterator = l1.iterator();

while (iterator.hasNext()) {
    YourClass o = (YourClass) iterator.next();
    if(!l2.contains(o)) l2.add(o);
}

l1 ist die ursprüngliche Liste, und l2 ist die Liste ohne Wiederholungen (Vergewissern Sie sich, dass YourClass über die Methode equals verfügt, die für die Gleichheit stehen soll)

25voto

user2868724 Punkte 239

Dies kann das Problem lösen:

private List<SomeClass> clearListFromDuplicateFirstName(List<SomeClass> list1) {

     Map<String, SomeClass> cleanMap = new LinkedHashMap<String, SomeClass>();
     for (int i = 0; i < list1.size(); i++) {
         cleanMap.put(list1.get(i).getFirstName(), list1.get(i));
     }
     List<SomeClass> list = new ArrayList<SomeClass>(cleanMap.values());
     return list;
}

21voto

CarlJohn Punkte 727

Es ist möglich, Duplikate aus arraylist zu entfernen, ohne HashSet o eine weitere Arrayliste .

Versuchen Sie diesen Code.

    ArrayList<String> lst = new ArrayList<String>();
    lst.add("ABC");
    lst.add("ABC");
    lst.add("ABCD");
    lst.add("ABCD");
    lst.add("ABCE");

    System.out.println("Duplicates List "+lst);

    Object[] st = lst.toArray();
      for (Object s : st) {
        if (lst.indexOf(s) != lst.lastIndexOf(s)) {
            lst.remove(lst.lastIndexOf(s));
         }
      }

    System.out.println("Distinct List "+lst);

Die Ausgabe ist

Duplicates List [ABC, ABC, ABCD, ABCD, ABCE]
Distinct List [ABC, ABCD, ABCE]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X