Fjernelse af det første element i en matrix

1. Oversigt

I denne vejledning vi ser på, hvordan man fjerner det første element i en matrix.

Derudover vil vi også se, hvordan brugen af ​​datastrukturer fra Java Collections Framework gør tingene endnu lettere.

2. Brug Arrays.copyOfRange ()

Først og fremmest, fjernelse af et element i en matrix er ikke teknisk muligt i Java. For at citere de officielle dokumenter:

”Et array er et containerobjekt, der indeholder et fast antal værdier af en enkelt type. Længden af ​​en matrix fastlægges, når matrixen oprettes. Efter skabelsen er dens længde fast. ”

Det betyder så længe vi arbejder med en matrix direkte, er alt, hvad vi kan gøre, at oprette en ny matrix af mindre størrelse, som derefter ikke indeholder det første element.

Heldigvis giver JDK en praktisk statisk hjælperfunktion, vi kan bruge, kaldet Arrays.copyOfRange ():

String [] stringArray = {"foo", "bar", "baz"}; String [] modifiedArray = Arrays.copyOfRange (stringArray, 1, stringArray.length);

Bemærk, at denne handling koster På) da det vil skabe et nyt array hver gang.

Selvfølgelig er dette en besværlig måde at fjerne et element fra arrayet, og hvis du udfører sådanne operationer regelmæssigt, kan det være mere fornuftigt at bruge Java Collections Framework i stedet.

3. Brug af en Liste Implementering

For at bevare nogenlunde den samme semantik i datastrukturen (en ordnet sekvens af elementer, der er tilgængelige via indeks), er det fornuftigt at bruge en implementering af Liste interface.

De to mest almindelige implementeringer er ArrayList og LinkedList.

Antag, at vi har følgende Listes:

Liste arrayList = ny ArrayList (); // udfyld ArrayList List linkedList = new LinkedList (); // udfyld den LinkedList

Da begge klasser implementerer den samme grænseflade, ser eksempelkoden til fjernelse af det første element den samme:

arrayList.remove (0); linkedList.remove (0);

I tilfælde af ArrayList, omkostningerne ved fjernelse er På), mens LinkedList har en pris på O (1).

Dette betyder ikke, at vi skal bruge en LinkedList overalt som standard, da prisen på at hente et objekt er omvendt. Omkostningerne ved at ringe få (i) er O (1) i tilfælde af ArrayList og På) i tilfælde af LinkedList.

4. Konklusion

Vi har set, hvordan man fjerner det første element i et array i Java. Derudover har vi set på, hvordan man opnår det samme resultat ved hjælp af Java Collections Framework.

Du kan finde eksempelkoden over på GitHub.