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.