hur du tar bort dubbletter från arrayer i Java

Ta bort dubbla poster från en Java array till en början verkar vara en subtil problem . Din första instinkt skulle vara att iterera igenom hela matrisen manuellt , jämföra uppgifterna för dubbletter och bygga en ny array , en post i taget . Detta är onödigt komplicerat , och det finns ett bättre sätt att lösa problemet med hjälp av HashSet klassen som kommer med Java . En av de användbara funktionerna i denna klass är att det kan upptäcka om ett tillagda objektet är en dubblett av ett befintligt objekt utan att leta och automatiskt lämna ut det .
1 .
skapa en klass för att hålla " removeDuplicates " metoden. Om du använder en textredigerare , klicka på " File ", " Nytt "och sedan på " File ", " Spara som ". Ge det namnet , till exempel " ArrayCleaner. java . " Om du använder en Java IDE , kommer du troligen att ha en "Fil-> Ny Klass " alternativ , men detta kan variera beroende på IDE -programmet .

Klistra in följande kod :

klass ArrayCleaner {
//
}

resten av koden står innanför konsolerna .
2
Importera HashSet klassen genom att lägga till följande kodrad i den absoluta toppen i din klass filen: .

import java. util. HashSet , <. br >
3
Lägg till removeDuplicates metoden :

public static Object [ ] removeDuplicates ( Object [ ] array ) {
HashSet hs=ny HashSet () ;

för ( Object x : array ) {
//Detta fungerar eftersom HashSet ignorerar automatiskt duplicera objekt .
hs. add (x ) ; }

retur hs. toArray () ; .
}
4
Skriv ett test huvudsakliga metod för att säkerställa att det fungerar som förväntat :

public static void main ( String [ ] args ) {
Integer [ ] a=ny Heltal [3 ] ;
en [0 ]=1 ;
en [ 1 ]=2 ;
en [2 ]=1 ;
Object [ ] arr=removeDuplicates (a ) ,

för ( Object x : arr ) {
System . out. println (x ) ; }

}
 

tips och varningar

 

  • i datavetenskap jargong , det tar bort dubbletter metod sker i O ( n ) tid snarare än O ( n ^ 2 ) tid . På ren svenska är det HashSet klassen mycket snabbare och effektivare än att bygga en ny array för hand .

8 3 5 6 7

Visited 1 times, 1 visit(s) today

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *