Kopírovanie súborov v prostredí Java

1. Prehľad

Jednoducho povedané, a Nastaviť je kolekcia, ktorá neobsahuje žiadne duplicitné prvky. V Jave Nastaviť je rozhranie, ktoré rozširuje Zbierka rozhranie.

V tomto rýchlom návode si ukážeme rôzne spôsoby kopírovania množín v Jave.

2. Kopírovať konštruktor

Jeden spôsob kopírovania a Nastaviť je použiť konštruktor kópií a Nastaviť implementácia:

Nastaviť copy = new HashSet (originál);

Konštruktor kopírovania je špeciálny typ konštruktora, ktorý sa používa na vytvorenie nového objektu kopírovaním existujúceho objektu.

Tu skutočne neklonujeme prvky danej množiny. Iba kopírujeme odkazy na objekty do novej množiny. Z tohto dôvodu každá zmena vykonaná v jednom prvku ovplyvní obe množiny.

3. Set.addAll

The Nastaviť rozhranie má pridať všetko metóda. Pridáva prvky v kolekcii do cieľovej množiny. Preto môžeme použiť pridať všetko metóda na kopírovanie prvkov existujúcej množiny do prázdnej množiny:

Nastaviť copy = new HashSet (); copy.addAll (originál);

4. Set.clone

Pamätajme na to Nastaviť je rozhranie, ktoré rozširuje Zbierka rozhranie musíme sa odvolať na objekt, ktorý implementuje Nastaviť rozhranie na vytvorenie ďalšej inštancie a Nastaviť.HashSet, TreeSet, LinkedHashSet, a EnumSet sú všetky príklady Nastaviť implementácie v Jave.

Všetky tieto Nastaviť implementácie majú klonovanú metódu, pretože všetky implementujú Cloneable rozhranie.

Takže ako ďalší prístup k kopírovaniu množiny môžeme nazvať množinu klon metóda:

Nastaviť copy = (Nastaviť) original.clone ();

Upozorňujeme tiež, že klonovanie pôvodne pochádza z Object.clone. Nastaviť implementácie prepísať klon metóda Objekt trieda. Charakter klonu závisí od skutočnej implementácie. Napríklad, HashSet robí iba plytkú kópiu, aj keď môžeme kódovať našu cestu k vytváraniu hlbokej kópie.

Ako vidíme, sme nútení obsadiť klonovaný objekt Nastaviť odkedy the klon metóda skutočne vráti Objekt.

5. JSON

Ďalším prístupom na kopírovanie sady je jej serializácia do a Reťazec JSON a vytvorte novú sadu z vygenerovaných Reťazec JSON. Je tiež potrebné poznamenať, že pre tento prístup musia byť všetky prvky v množine a odkazované prvky serializovateľné a to vykonáme hĺbkovú kópiu všetkých objektov.

V tomto príklade skopírujeme množinu pomocou metód serializácie a deserializácie od spoločnosti Google Gson knižnica:

Gson gson = nový Gson (); Reťazec jsonStr = gson.toJson (pôvodný); Nastaviť copy = gson.fromJson (jsonStr, Set.class);

6. Apache Commons Lang

Apache Commons Lang má triedu SerializationUtils ktorá poskytuje špeciálnu metódu - klon - ktoré možno použiť na klonovanie daného objektu. Túto metódu môžeme použiť na skopírovanie sady:

pre (položka T: originál) {copy.add (SerializationUtils.clone (položka)); }

Poznamenajme to SerializationUtils.clone očakáva, že jeho parameter rozšíri Serializovateľné trieda.

7. Collectors.toSet

Alebo môžeme použiť Java 8 Prúd API s Zberatelia na klonovanie sady:

Nastaviť copy = original.stream () .collect (Collectors.toSet ());

Jednou z výhod Stream API je to, že poskytuje väčšie pohodlie tým, že nám umožňuje používať preskakovania, filtre a ďalšie.

8. Používanie Java 10

Java 10 prináša do aplikácie novú funkciu Nastaviť rozhranie že umožňuje nám vytvoriť nemennú množinu z prvkov danej zbierky:

Set copy = Set.copyOf (originál);

Poznač si to Set.copyOf očakáva, ženulový parameter.

9. Záver

V tomto článku sme preskúmali rôzne spôsoby kopírovania množín v prostredí Java.

Ako vždy, pozrite si zdrojový kód pre naše príklady vrátane kódu pre Java 10.