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.