Fjerne det første elementet i en serie
1. Oversikt
I denne veiledningen, vi ser på hvordan du fjerner det første elementet i en matrise.
I tillegg vil vi også se hvordan bruk av datastrukturer fra Java Collections Framework gjør ting enda enklere.
2. Bruke Arrays.copyOfRange ()
Først av alt, å fjerne et element i en matrise er ikke teknisk mulig i Java. For å sitere de offisielle dokumentene:
“En matrise er et containerobjekt som har et fast antall verdier av en enkelt type. Lengden på en matrise blir etablert når matrisen opprettes. Etter opprettelsen er lengden fast. ”
Dette betyr så lenge vi jobber med en matrise direkte, er alt vi kan gjøre å lage en ny matrise med mindre størrelse, som da ikke inneholder det første elementet.
Heldigvis gir JDK en praktisk statisk hjelperfunksjon vi kan bruke, kalt Arrays.copyOfRange ():
String [] stringArray = {"foo", "bar", "baz"}; Streng [] modifiedArray = Arrays.copyOfRange (stringArray, 1, stringArray.length);
Merk at denne operasjonen koster På) siden det vil opprette et nytt utvalg hver gang.
Selvfølgelig er dette en tungvint måte å fjerne et element fra matrisen, og hvis du gjør slike operasjoner regelmessig, kan det være mer fornuftig å bruke Java Collections Framework i stedet.
3. Bruke en Liste Gjennomføring
For å beholde omtrent den samme semantikken i datastrukturen (en ordnet sekvens av elementer som er tilgjengelige via indeks), er det fornuftig å bruke en implementering av Liste grensesnitt.
De to vanligste implementeringene er ArrayList og LinkedList.
Anta at vi har følgende Listes:
Liste arrayList = ny ArrayList (); // fyll ut ArrayList List linkedList = new LinkedList (); // fyll ut LinkedList
Siden begge klassene implementerer det samme grensesnittet, ser eksempelkoden for å fjerne det første elementet likt ut:
arrayList.remove (0); linkedList.remove (0);
I tilfelle av ArrayList, kostnaden for å fjerne er På), samtidig som LinkedList har en kostnad på O (1).
Dette betyr ikke at vi skal bruke en LinkedList overalt som standard siden kostnadene for å hente et objekt er omvendt. Kostnaden ved å ringe få (i) er O (1) i tilfelle av ArrayList og På) i tilfelle av LinkedList.
4. Konklusjon
Vi har sett hvordan du fjerner det første elementet i en matrise i Java. I tillegg har vi sett på hvordan man kan oppnå det samme resultatet ved hjelp av Java Collections Framework.
Du kan finne eksempelkoden på GitHub.