Java >> Java tutorial >  >> Tag >> ArrayList

Sådan fjerner du dubletter fra ArrayList i java

Lad os lære, hvordan man fjerner dubletter fra arraylist i java?

Sådan fjerner du dubletter fra ArrayList i java

Her er opgaven at fjerne dubletter i Arraylist. I nedenstående java-program får du først ArrayList med duplikerede heltalsværdier. Udskriv nu ArrayList med dublerede heltalsværdier på konsollen.

Opret endnu en ArrayList 'alNew'. Send den første arraylist som et argument til removeDuplicate()-metoden. I denne metode skal du krydse første arrayliste-elementer og gemme den første ankomst af hvert element i den anden arraylist ved hjælp af contains()-metoden.

Efter gennemgang af arraylisteelementer ved brug af foreach loop indeholder anden arraylist elementer med dubletter eller gentagne elementer fjernet.

import java.util.ArrayList;
import java.util.Arrays;
public class DuplicatesFromArraylist
{
   public static <T> ArrayList<T> removeDuplicate(ArrayList<T> al)
   {
      ArrayList<T> alNew = new ArrayList<T>();
      for(T element : al)
      {
         // if element is present in alNew then add it
         if(!alNew.contains(element))
         {
            alNew.add(element);
         }
      }
      // return alNew
      return alNew;
   }
   public static void main(String[] args)
   {
      ArrayList<Integer> al = new ArrayList<>(Arrays.asList(2, 2, 4, 4, 6, 6, 8, 8, 1, 3, 5, 7, 9));
      System.out.println("Before removing duplicates from ArrayList: " + al);
      ArrayList<Integer> alNew = removeDuplicate(al);
      // printing ArrayList with duplicates
      System.out.println("After removing duplicates from ArrayList: " + alNew);
   }
}

Output:

Før du fjerner dubletter fra ArrayList:[2, 2, 4, 4, 6, 6, 8, 8, 1, 3, 5, 7, 9]
Efter fjernelse af dubletter fra ArrayList:[2, 4, 6, 8, 1, 3, 5, 7, 9]

Fjern dubletter fra array java 8

For at fjerne dubletter fra array i java 8 skal du bruge distinct() metoden. distinct()-metoden returnerer en strøm, der består af de distinkte elementer (ifølge Object.equals(Object)) af en given strøm.

I nedenstående java-program får du først ArrayList med duplikerede værdier. Brug denne arraylist til at oprette en ny liste. Bruger nu Stream().distinct()-metoden til at returnere distinkt objektstrøm. Konverter endelig objektstrøm til List. Lad os se et eksempel.

import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class RemoveDuplicatesJava8
{
   public static void main(String[] args)
   {
      List li1 = new ArrayList<>(Arrays.asList(2, 2, 4, 4, 6, 6, 8, 8, 1, 3, 5, 7, 9));
      System.out.println("Before removing duplicate elements: " + li1);
      // create new list from elements of original list
      List li2 = li1.stream().distinct().collect(Collectors.toList());
      // printing ArrayList with duplicates removed
      System.out.println("After removing duplicate elements: " + li2);
   }
}

Output:

ArrayList med dubletter:[2, 2, 4, 4, 6, 6, 8, 8, 1, 3, 5, 7, 9]
ArrayList med dubletter fjernet:[2, 4, 6, 8, 1, 3, 5, 7, 9]

Lad os på samme måde fjerne dubletter fra ArrayList ved hjælp af LinkedHashSet. Her skal vi først konvertere ArrayList til Set. Fordi et sæt ikke tillader dubletter.

I nedenstående java-program får du først ArrayList med duplikerede værdier. Opret nu LinkedHashSet fra givet ArrayList. Her vil LinkedHashSet fjerne alle duplikerede værdier.

I næste trin konverterer LinkedHashSet tilbage til ArrayList. Udskriv endelig den anden ArrayList på konsollen med duplikerede værdier fjernet.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
public class UsingLinkedHashSet
{
   public static <T>ArrayList<T> removeDuplicate(ArrayList<T> al)
   {
      Set<T> set = new LinkedHashSet<>();
      set.addAll(al);
      // clear list
      al.clear();
      al.addAll(set);
      return al;
   }
   public static void main(String[] args)
   {
      // ArrayList with duplicate values
      ArrayList<Integer> al1 = new ArrayList<>(Arrays.asList(2, 2, 4, 4, 6, 6, 8, 8, 1, 3, 5, 7, 9));
      System.out.println("ArrayList with duplicate values: " + al1);
      ArrayList<Integer> al2 = removeDuplicate(al1);
      // printing ArrayList with duplicates removed
      System.out.println("ArrayList with duplicate values removed: " + al2);
   }
}

Output:

ArrayList med duplikerede værdier:[2, 2, 4, 4, 6, 6, 8, 8, 1, 3, 5, 7, 9]
ArrayList med duplikerede værdier fjernet:[2, 4, 6, 8, 1, 3, 5, 7, 9]


Java tag