9, a fő kérdés a térkép java
9, a fő kérdések a térkép Java

eredeti
Emlékezzünk, hogy a térkép - strukturált adat áll egy kulcs-érték párokat, és minden gomb csak akkor használható, egyszer egy térkép. Ez a téma feltárja 9 fő kérdés, hogyan kell használni Térkép Java, és megtestesült (végre) osztályok. Az egyszerűség kedvéért fogom használni a példákban az általánosítás. Mert én csak írj térkép. megadása nélkül bejutott térkép. De akkor feltételezhető, hogy mind a K és V értékek összehasonlíthatók, ami azt jelenti, K kiterjed összehasonlítható és V is kiterjed összehasonlítható.
0 Cím Térkép a List
A Java, térkép interfész háromféle gyűjtemény: egy kulcscsomót, olyan értékrendet és egy sor kulcsfontosságú érték. Mindegyikük lehet alakítani egy listát a kivitelező vagy módszer addAll (). A következő kód azt mutatja, hogyan filé hogy ArrayList a térkép.
1. Menj át az összes értéket a térkép.
Az eltelt egy pár kulcs-érték - a bázis, az alapvető eljárási szakasz Térkép. A Java, a minden pár tárolja a térkép nevű mezőt Map.Entry. Térkép .entrySet () visszaad egy kulcs-érték, mert a leghatékonyabb módja annak, hogy menjen végig az értékeket térkép:
Így tudjuk használni a Iterátor, különösen a fiatalabb változatai a JDK 1.5
2. szervező térkép kulcsokhoz
Térkép a kulcsokat elrendelő másik gyakran találkozott eljárást. Első út: add Map.Entry a listán, és egyszerűsítette a komparátor, hogy rendezi az értékeket.
Egy másik módja az, hogy SortedMap. hogy minden építi tovább és a kulcs ahhoz. De az összes kulcsot egyidejűleg kell végrehajtani összehasonlítható vagy kapott a komparátor.
Az egyik osztály végre SortedMap - Treemap. A kivitelező veszi a komparátor. A következő kód azt mutatja, hogyan kell átalakítani egy közönséges Térkép rendezett.
3. Szervező Map értékeken
Térkép hozzáadása a listához és az azt követő rendezési munkát, és ebben az esetben, de szükséges ebben az időben, hogy a belépési .getValue (). Az alábbi kódot majdnem ugyanaz, mint korábban.
Mi továbbra is használhatja SortedMap ebben az esetben, de csak akkor, ha az értékek egyediek. Ebben az esetben, akkor viszont kulcsértékpárhoz a kulcs-érték. Ez a megoldás egy szigorú korlátozást, és nem ajánlott nekem.
Guava könyvtárat is támogat különböző módon inicializálni statikus és megváltoztathatatlan gyűjtemények. Hogy vizsgálja meg több hasznot Guava közművek állandó gyűjtemény, lásd az utasításokat a Constant Collection Guava.
5. A különbség HashMap, Treemap, és hashHárom fő inkarnációja Map interfész Java: HashMap. Treemap. és hash. A fő különbségek a következők:
- Az, hogy a folyosón. HashMap és hash nem ad garanciát a sorrendben térkép; különösen nem garantálja, hogy a rend ugyanaz marad az idő múlásával. De Treemap szervezni az összes értéket a „természetes rend” kulcsok vagy összehasonlító.
- Elfogadható kulcsértékpárok. HashMap lehetővé teszi, hogy a kulcsot, és null null. Hash nem teszi lehetővé null kulcs vagy értéke null. Ha Treemap használ természetes rendjét, illetve az összehasonlító nem teszi lehetővé null gombot. kivételt fog dobni.
- A szinkronizálás. Csak hash szinkronizálva, a többi - nem. De „ha szálkezelést megvalósításában azt javasoljuk, hogy ne használja, ahelyett HashMap hash».
7. A felületes másolatot Térkép
Szinte minden, ha nem az összes, térkép Java tartalmaz egy másolatot kivitelező másik térkép. De a másolási eljárás nem szinkronizált. Mit jelent, ha egy szál példányban a térkép, a másik tudja változtatni a szerkezetét. Hogy megakadályozza a hirtelen szinkronban mentés, egyikük kell használni ilyen esetben Collections.synchronizedMap ().
Egy másik érdekes módja annak, hogy másolja a felületet - módszerrel klón (). De ez nem ajánlott, még az alkotó a Java Collections keret, John Bloch. A vita „copy kivitelező ellen klónozás”, elfoglalja a pozícióját:
Idézet: „.. én gyakran hivatkoznak nyilvános eljárás klón egy adott osztály, mivel az emberek azt várják tőlük, hogy ott ... de kár, hogy a klónozás van törve, de ez történt ... klónozása egy gyenge pontja, és azt hiszem, az emberek tisztában kell lenniük a maga korlátai.” emiatt nem is megmutatja, hogyan kell használni a klón () metódus, hogy másolni egy térkép
8. Hozzon létre egy üres térkép
Ha a térkép nem változik, akkor
Vagy bármilyen más megtestesülése. például