Ich habe eine ArrayList<String>
und ich möchte wiederholte Zeichenfolgen daraus entfernen. Wie kann ich das tun?
Antworten
Zu viele Anzeigen?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());
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)
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;
}
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]