2024-04-24 13:20 Doba čtení: 8 min

Jak odstranit prvky pole v Javě

Úvodní informace

Pole představuje základní datovou strukturu v Javě, která umožňuje uchovávat soubor prvků téhož datového typu. V praxi se často setkáváme se situacemi, kdy je potřeba z pole odstranit jeden či více prvků. Java nabízí několik rozmanitých postupů, jak tento úkol splnit, přičemž volba nejvhodnější metody závisí na konkrétních okolnostech. V tomto článku se detailně zaměříme na různé metody a techniky pro odstraňování prvků z polí v Javě, doplněné o praktické ukázky pro každé z nabízených řešení.

Metody pro manipulaci s prvky polí

1. Využití metody Arrays.copyOf() pro odebrání prvku

Metoda Arrays.copyOf(), která je součástí třídy java.util.Arrays, je užitečná při odstraňování jednotlivých prvků z pole. Tato metoda vytváří nové pole s definovanou délkou, přičemž do nového pole se kopírují prvky z původního pole s vyloučením prvku, který chceme odstranit.


int[] ciselnePole = {1, 2, 3, 4, 5};
int indexKeSmazani = 2; // Odstraníme prvek na indexu 2 (hodnota 3)

int[] novePole = new int[ciselnePole.length - 1];
System.arraycopy(ciselnePole, 0, novePole, 0, indexKeSmazani);
System.arraycopy(ciselnePole, indexKeSmazani + 1, novePole, indexKeSmazani, ciselnePole.length - indexKeSmazani - 1);
ciselnePole = novePole;

Po provedení této operace bude ciselnePole obsahovat hodnoty {1, 2, 4, 5}.

2. Iterace pomocí for-each s filtrem

Další možností pro odstraňování prvků z pole je využití cyklu for-each v kombinaci s filtrem. Tato metoda je vhodná, pokud potřebujeme odstranit více prvků na základě specifických kritérií.


int[] ciselnePole = {1, 2, 3, 4, 5};
List prvkyKeSmazani = List.of(2, 4);

ciselnePole = Arrays.stream(ciselnePole)
            .filter(prvek -> !prvkyKeSmazani.contains(prvek))
            .toArray();

Po provedení tohoto kódu bude ciselnePole obsahovat pouze hodnoty {1, 3, 5}.

3. Převod pole na ArrayList

Pokud potřebujete často manipulovat s prvky pole, je výhodné převést ho na ArrayList. Tato struktura umožňuje snadné vkládání a odstraňování prvků.


int[] ciselnePole = {1, 2, 3, 4, 5};
List seznamCisel = new ArrayList<>(Arrays.asList(Arrays.stream(ciselnePole).boxed().toArray(Integer[]::new)));

seznamCisel.remove(2); // Odstranění prvku na indexu 2 (hodnota 3)

Po provedení této operace bude seznam seznamCisel obsahovat hodnoty {1, 2, 4, 5}.

4. Kopírování pole pomocí System.arraycopy()

Metoda System.arraycopy() umožňuje selektivně kopírovat prvky z jednoho pole do jiného s možností vynechání prvků, které chceme odstranit. Tato metoda přijímá zdrojové pole, počáteční index zdrojového pole, cílové pole, počáteční index cílového pole a počet kopírovaných prvků.


int[] ciselnePole = {1, 2, 3, 4, 5};
int[] novePole = new int[ciselnePole.length - 1];

System.arraycopy(ciselnePole, 0, novePole, 0, 2);
System.arraycopy(ciselnePole, 3, novePole, 2, novePole.length - 2);

Po provedení tohoto kódu bude novePole obsahovat hodnoty {1, 2, 4, 5}.

Závěrečné shrnutí

Odstraňování prvků z pole v Javě je běžný úkol, který lze řešit různými způsoby. Volba nejvhodnější metody závisí na specifických potřebách a požadavcích aplikace. Metoda Arrays.copyOf() s následným kopírováním pomocí System.arraycopy() je vhodná pro odstraňování jednotlivých prvků. Použití cyklu for-each s filtrem umožňuje efektivně odstranit více prvků splňujících zadaná kritéria. Převod pole na instanci ArrayList poskytuje flexibilitu pro časté vkládání a odstraňování prvků, a metoda System.arraycopy() je užitečná pro efektivní kopírování částí pole do nového pole s vynecháním nechtěných prvků. Důkladným zvážením dostupných možností mohou vývojáři vybrat nejoptimálnější řešení pro své specifické potřeby.

Často kladené otázky

1. Jak odstranit první prvek z pole v Javě?


int[] pole = {1, 2, 3, 4, 5};
pole = Arrays.copyOfRange(pole, 1, pole.length);

2. Jak odstranit poslední prvek z pole v Javě?


int[] pole = {1, 2, 3, 4, 5};
pole = Arrays.copyOf(pole, pole.length - 1);

3. Jak odstranit všechny prvky z pole v Javě?


int[] pole = {1, 2, 3, 4, 5};
pole = new int[0];

4. Jak odstranit duplikáty z pole v Javě?


Integer[] pole = {1, 2, 2, 3, 4, 4, 5};
Set mnozina = new HashSet<>(Arrays.asList(pole));
pole = mnozina.toArray(new Integer[0]);

5. Jak odstranit prvek z pole, pokud neznáme jeho index?


int[] pole = {1, 2, 3, 4, 5};
int prvekKeSmazani = 3;
pole = Arrays.stream(pole)
        .filter(i -> i != prvekKeSmazani)
        .toArray();

6. Jak odstranit prvky z více polí v Javě?


int[] pole1 = {1, 2, 3};
int[] pole2 = {4, 5, 6};

List seznamPoli = List.of(pole1, pole2);

seznamPoli.forEach(pole -> {
    // Operace na každém poli
});

7. Jak odstranit prvky z pole, které splňují určitou podmínku?


int[] pole = {1, 2, 3, 4, 5};

pole = Arrays.stream(pole)
        .filter(i -> i % 2 != 0) // Odstranit sudá čísla
        .toArray();

8. Jak odstranit prvky z pole v určitých intervalech?


int[] pole = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

pole = Arrays.stream(pole)
        .skip(2)
        .limit(5)
        .toArray();

9. Jak odstranit prvky z pole v opačném pořadí?


int[] pole = {1, 2, 3, 4, 5};
for (int i = pole.length - 1; i >= 0; i--) {
    // Zpracovat prvek na indexu i
}

10. Jak odstranit prvky z pole asynchronně?


int[] pole = {1, 2, 3, 4, 5};

CompletableFuture.runAsync(() -> {
    // Operace na poli
}).thenAccept(vysledek -> {
    // Zpracovat výsledek
});

Jan Novák
Autor
Czechia

Redaktor zaměřený na Windows, produktivitu a cloudové nástroje.

Předchozí článek
Jak nainstalovat Nginx na Rocky Linux 9
Další článek
Jak ověřit XML podle XSD v Javě