Премахване на първия елемент от масив

1. Общ преглед

В този урок ще разгледаме как да премахнем първия елемент от масив .

Освен това ще видим и как използването на структури от данни от Java Collections Framework прави нещата още по-лесни.

2. Използване на Arrays.copyOfRange ()

На първо място, премахването на елемент от масив не е технически възможно в Java . За да цитирате официалните документи:

„Масивът е обект на контейнер, който съдържа фиксиран брой стойности от един тип. Дължината на масива се установява при създаването на масива. След създаването му дължината е фиксирана. ”

Това означава, че докато работим с масив директно, всичко, което можем да направим, е да създадем нов масив с по-малък размер, който след това не съдържа първия елемент .

За щастие JDK предоставя удобна статична помощна функция, която можем да използваме, наречена Arrays.copyOfRange () :

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

Имайте предвид, че тази операция има цена O (n), тъй като всеки път ще създава нов масив.

Разбира се, това е тромав начин за премахване на елемент от масива и ако правите такива операции редовно, може би е по-разумно да използвате Java Collections Framework вместо това.

3. Използване на изпълнение на списък

За да се запази приблизително същата семантика на структурата на данните (подредена последователност от елементи, които са достъпни чрез индекс), има смисъл да се използва изпълнение на интерфейса List .

Двете най-често срещани реализации са ArrayList и LinkedList .

Да предположим, че имаме следните списъци :

List arrayList = new ArrayList(); // populate the ArrayList List linkedList = new LinkedList(); // populate the LinkedList

Тъй като и двата класа изпълняват един и същ интерфейс, примерният код за премахване на първия елемент изглежда еднакво:

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

В случая на ArrayList цената за премахване е O (n) , докато LinkedList има цена O (1) .

Това не означава, че трябва да използваме LinkedList навсякъде по подразбиране, тъй като цената за извличане на обект е обратната. Цената за извикване на get (i) е O (1) в случай на ArrayList и O (n) в случай на LinkedList .

4. Заключение

Видяхме как да премахнем първия елемент от масив в Java. Освен това разгледахме как да постигнем същия резултат, използвайки Java Collections Framework.

Можете да намерите примерния код на GitHub.