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 .