java map interface tutorial with implementation examples
Ta izčrpen vadnik Java Map zajema, kako ustvariti, inicializirati in itirirati prek Zemljevidov. Spoznali boste tudi metode zemljevidov in primere izvedbe:
Spoznali boste osnove vmesnika zemljevida, metode, ki jih podpira vmesnik zemljevida, in druge posebne izraze, povezane z vmesnikom zemljevida.
Zbirka Maps v Javi je zbirka, ki preslika ključ do vrednosti. Je zbirka, sestavljena iz ključev in vrednosti. Vsak vnos na zemljevidu je sestavljen iz ključa z ustrezno vrednostjo. Tipke so na zemljevidih edinstvene. Zemljevide lahko običajno uporabimo, kadar moramo spremeniti zbirko na podlagi vrednosti ključa.
=> Tukaj preverite VSE Vadnice za Java.
Kaj se boste naučili:
- Zemljevidi v Javi
- Metode zemljevidov
- Izvajanje zemljevida Java
- Zaključek
Zemljevidi v Javi
Zemljevid v Javi je del vmesnika java.util.map. Vmesnik zemljevidov ni del vmesnika zbirke in zato se zemljevidi razlikujejo od ostalih zbirk.
Splošna hierarhija vmesnika zemljevida je prikazana spodaj.
Kot je prikazano zgoraj, obstajata dva vmesnika za izvajanje zemljevida, tj.vmesnik zemljevida in vmesnik sortedMap. Obstajajo trije razredi, in sicer HashMap, TreeMap in LinkedHashMap.
Te vrste zemljevidov so opisane spodaj:
Razred | Opis | |
---|---|---|
Odstrani | V odstrani (tipka predmeta) | Izbrišite vnos na zemljevidu za dani ključ |
LinkedHashMap | Razširi se iz razreda HashMap. Ta zemljevid ohranja vrstni red vstavljanja | |
HashMap | Izvedite zemljevid vmesnik. HashMap ne vzdržuje nobenega reda. | |
TreeMap | Izvaja vmesnik map in sortedMap. TreeMap ohranja naraščajoči vrstni red. |
Pomembne točke glede zemljevidov.
- Na zemljevidih lahko vsaka tipka preslika največ eno vrednost. Na zemljevidih tudi ne more biti podvojenih ključev.
- Izvedbe zemljevidov, kot sta HashMap in LinkedHashMap, omogočajo ničelne in ničelne vrednosti. Vendar pa TreeMap tega ne dovoljuje.
- Zemljevida ni mogoče prehoditi takšnega, kot je. Zato ga je treba za prehod pretvoriti v nastavitev z uporabo metode keyset () ali entrySet ().
Ustvari zemljevid v Javi
Če želite ustvariti zemljevid v Javi, moramo najprej v svoj program vključiti vmesnik. Za uvoz funkcije zemljevida lahko uporabimo enega od naslednjih stavkov v programu.
import java.util.*; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.TreeMap;
Primeriti moramo konkretno izvedbo zemljevida, saj je vmesnik.
Naslednji stavki ustvarijo zemljevid v Javi.
Map hash_map = new HashMap(); Map tree_map = new TreeMap();
Zgornji stavki bodo ustvarili zemljevide s privzetimi specifikacijami.
Ustvarimo lahko tudi splošne zemljevide, ki določajo vrste za ključ in vrednost.
Map myMap = new HashMap();
Zgornja definicija bo imela kot vrednosti ključe tipa string in predmete.
Inicializirajte zemljevid v Javi
Inicializirati ga je mogoče z naslednjimi metodami:
# 1) Uporaba zbirk
Razred Java Collections ima tovarniške metode, s katerimi je mogoče inicializirati zbirke, vključno z zemljevidi.
Nekatere metode za inicializacijo zemljevida so naslednje:
(1) Zbirke.EmptyMap ()
Collections.EmptyMap () vrne serijski in nespremenljiv zemljevid, ki je prazen. Na primer, naslednja vrstica kode,
Map myMap = Collections.EMPTY_MAP;
Tako boste ustvarili prazen zemljevid. Zgornja metoda lahko vrže 'nepreverjeno opozorilo o dodelitvi', zato lahko uporabimo tudi obrazec za varno uporabo, kot sledi.
Map myMap = Collections.emptyMap ();
(2) Collections.unModifiableMap ()
Metoda unModifiableMap () za argument vzame drug zemljevid in ustvari nespremenljiv pogled na prvotni zemljevid.
Map myMap = Collections.EMPTY_MAP; Map map_unmodifiable = Collections.unmodifiableMap (myMap);
(3) Collections.singletonMap ()
Razred zbirk ponuja tudi tovarniško metodo ‘singletonMap ()’, ki ustvari nespremenljiv singleton map, ki ima samo en vnos.
Map singleton_map = Collections.singletonMap('CHN', 'Beijing');
# 2) Uporaba Jave 8
Tok podatkov lahko pridobimo iz metod Java API 8 stream in gradimo zemljevide z uporabo zbirk.
Nekatere metode za izdelavo zemljevidov so:
(1) Collectors.toMap ()
Zberemo tok in nato z metodo Collectors.toMap () izdelamo zemljevid.
Map map = Stream.of(new String()(){{'USA', 'Washington'}, {'United Kingdom', 'London'} }).collect(Collectors.toMap(p -> p(0), p -> p(1)));
Zgornja izjava ustvari zemljevid iz toka Java 8.
(2) Collectors.collectingAndThen ()
V tem prilagodimo metodo toMap (), ki zbiralcu omogoča izdelavo nespremenljivega zemljevida z uporabo metode collectionAndThen ().
Map immutableMap = Stream.of(new String()(){ {'USA', 'Washington'}, {'United Kingdom', 'London”} }).collect(Collectors.collectingAndThen(Collectors.toMap(p -> p (0), p -> p(1)), Collections::unmodifiableMap));
# 3) Z uporabo metode put vmesnika zemljevida
Metodo put () vmesnika zemljevida lahko uporabimo za dodeljevanje začetnih vrednosti zemljevidov.
# 4) Uporaba dvojne oklepaje
Tehnika 'inicializacija z dvojno oklepaj' ustvari notranji razred. Ta razred je anonimen in ima v sebi inicializator primerka. To ni najprimernejša tehnika in se ji je treba izogibati, saj lahko povzroči puščanje pomnilnika ali težave s serializacijo.
Spodnji program prikazuje različne zgoraj opisane načine inicializacije zemljevida.
import java.util.*; import java.util.stream.*; import java.util.stream.Collectors; public class Main { public static void main(String args()) { //using Collections //create an empty map Map emptymap = Collections.EMPTY_MAP; //create unmodifiable map using Collections Map unmodifiableMap = Collections.unmodifiableMap(emptymap); System.out.println('unmodifiableMap map values:' + unmodifiableMap); //singleton map Map singleton_map = Collections.singletonMap(10, ' TEN'); System.out.println('
singleton_map Map values:' + singleton_map); //using Java 8 //1. toMap method of collectors class Map map_cities = Stream.of(new String()(){ {'MH', 'Mumbai'}, {'CH', 'Chennai'}, {'DL', 'New Delhi'} }).collect(Collectors.toMap(p -> p(0), p -> p(1))); System.out.println('
map_cities values: ' + map_cities); //2. collectingAndThen method Map capitals_Map = Stream.of(new String()(){ {'MAH', 'Mumbai'}, {'GOA', 'Panaji'}, {'KAR', 'Bangaluru'} }).collect(Collectors.collectingAndThen (Collectors.toMap(p -> p(0), p -> p(1)), Collections::unmodifiableMap)); System.out.println('
capitals_Map values: ' + capitals_Map); //double brace initialization Map country_map = new HashMap(); country_map.put('USA', 'Washington'); country_map.put('UK', 'London'); country_map.put('IND', 'Delhi'); country_map.put('GER', 'Berlin'); System.out.println('
Map values:' + country_map); } }
Izhod:
vrednosti zemljevida unmodifiableMap: {}
Vrednosti zemljevida singleton_map: {10 = TEN}
vrednosti map_cities: {CH = Chennai, DL = New Delhi, MH = Mumbai}
capitals_Map vrednosti: {MAH = Mumbai, GOA = Panaji, KAR = Bangaluru}
Vrednosti zemljevida: {ZDA = Washington, GER = Berlin, UK = London, IND = Delhi}
Ponavljajte zemljevid v Javi in natisnite zemljevid
Zemljevid lahko prehodimo na enak način kot druge zbirke. Poleg prečkanja vnosov na zemljevidu lahko prehodimo tudi samo tipke ali samo vrednosti na zemljevidu. Če želite prečkati zemljevid, ga morate najprej pretvoriti, da ga nastavite.
Za prehod vnosov na zemljevidu se uporabljajo naslednje metode.
Uporaba Entre Iteratorja
Pri tej metodi dobimo iterator vnosa iz nabora vnosov. Nato z metodama getKey in getValue pridobimo par ključ-vrednost za vsak vnos zemljevida.
Naslednji program prikazuje uporabo iteratorja vnosa.
import java.util.*; import java.util.stream.*; import java.util.stream.Collectors; public class Main { public static void main(String args()) { //use toMap method of collectors class to populate the map Map map_cities = Stream.of(new String()(){ {'MH', 'Mumbai'}, {'CH', 'Chennai'}, {'DL', 'New Delhi'} }).collect(Collectors.toMap(p -> p(0), p -> p(1))); //transform map to set Set entries = map_cities.entrySet(); //declare an iterator Iterator iterator = entries.iterator(); System.out.println('The map entries are:'); System.out.println(' KEY VALUE'); //iterate and print key and value pairs. while(iterator.hasNext()) { Map.Entry entry = iterator.next(); System.out.println(' ' + entry.getKey() + ' ' +entry.getValue()); } } }
Izhod:
Vnosi na zemljevidu so:
KLJUČNA VREDNOST
CH Čenaj
DL New Delhi
MH Mumbai
V zgornjem programu z zemljevida dobimo iterator vnosa s pomočjo metode entrySet. Nato prehodimo zemljevid z uporabo metode hasNext () vnosnega iteratorja in natisnemo par ključ-vrednost.
Uporaba vnosa za vsako zanko
Tu prehodimo entrySet z uporabo zanke for-in izvedba je prikazana spodaj.
import java.util.*; import java.util.stream.*; import java.util.stream.Collectors; public class Main { public static void main(String args()) { //use toMap method of collectors class to populate the map Map map_cities = Stream.of(new String()(){ {'MH', 'Mumbai'}, {'CH', 'Chennai'}, {'DL', 'New Delhi'} }).collect(Collectors.toMap(p -> p(0), p -> p(1))); System.out.println('The map entries are:'); System.out.println(' KEY VALUE'); //iterate using for each over entry set and print key and value pairs. for(Map.Entry entry : map_cities.entrySet()){ System.out.println(' ' + entry.getKey() + ' ' +entry.getValue()); } } }
Izhod:
Vnosi na zemljevidu so:
KLJUČNA VREDNOST
CH Čenaj
DL New Delhi
MH Mumbai
Metode zemljevidov
Map vmesnik v Javi podpira različne operacije, podobne tistim, ki jih podpirajo druge zbirke. V tem poglavju bomo razpravljali o različnih metodah, ki jih ponuja API API v Javi. Ker je obseg te vadnice na splošno omejen na uvajanje vmesnika zemljevida, teh metod ne bomo opisovali.
O teh metodah bomo podrobno razpravljali med razpravami o razredih vmesnikov zemljevidov.
V spodnji tabeli so navedeni vsi načini, ki jih ponuja API map.
Ime metode | Prototip metode | Opis |
---|---|---|
dobili | V get (tipka predmeta) | Vrne objekt ali vrednost za dani ključ |
dal | V put (tipka predmeta, vrednost predmeta) | Na zemljevid vstavite vnos ključ-vrednost |
putAll | void putAll (zemljevid zemljevida) | Na zemljevid vstavite dane vnose na zemljevidu. Z drugimi besedami, kopira ali klonira zemljevid. |
keySet | Nastavi keySet () | Vrne nastavljeni pogled zemljevida. |
entrySet | Nastavite | Vrne nastavitev pogleda za dani zemljevid |
vrednote | Vrednosti zbirke () | Vrne pogled zbirke vrednosti na zemljevidu. |
velikost | velikost int () | Vrne število vnosov na zemljevidu |
jasno | prazno jasno () | Počisti zemljevid |
je prazno | logična isEmpty () | Preveri, če je zemljevid prazen, in če je odgovor da, vrne true. |
vsebujeVrednost | boolean containsValue (vrednost predmeta) | Vrne true, če zemljevid vsebuje vrednost, ki je enaka dani vrednosti |
vsebujeKljuč | boolean containsKey (tipka predmeta) | Vrne true, če dani ključ obstaja na zemljevidu |
enako | logično enako (objekt o) | Primerja določeni objekt o z zemljevidom |
hashCode | int hashCode () | vrne hash kodo za Zemljevid |
za vsakogar | void forEach (BiConsumer action) | Izvede dano dejanje za vsak vnos na zemljevidu |
getOrDefault | V getOrDefault (Tipka predmeta, V defaultValue) | Vrne določeno vrednost za dani ključ ali njegovo privzeto vrednost, če ključ ni prisoten |
Odstrani | logično odstranjevanje (tipka predmeta, vrednost predmeta) | Odstrani določene ključe in vrednosti |
zamenjati | V zamenjava (tipka K, vrednost V) | Nadomešča dani ključ z navedeno vrednostjo |
zamenjati | logična zamenjava (tipka K, V oldValue, V newValue) | Zamenja staro vrednost z novo vrednostjo za dani ključ |
replaceAll | void replaceAll (funkcija BiFunction) | Pokliče dano funkcijo za nadomestitev vseh vnosov na zemljevidu |
putIfAbsent | V putIfAbsent (tipka K, vrednost V) | Vstavi dani ključ, vrednost le, če še ni prisoten |
izračunati | V izračun (tipka K, BiFunction remappingFunction) | Izračuna preslikavo za določeni ključ in vrednost glede na funkcijo preslikave. |
computeIfAbsent | V computeIfAbsent (tipka K, preslikava funkcijFunction) | Izračunajte vrednost za dani ključ s funkcijo preslikave, če ta še ni prisotna. |
computeIfPresent | V computeIfPresent (tipka K, BiFunction remappingFunction) | Izračuna novo preslikavo za dani ključ z dano funkcijo preusmeritve, če je vrednost ključa že prisotna |
pojdi | V spojitev (tipka K, vrednost V, BiFunction remappingFunction) | Dani ključ poveže z vrednostjo, če še ni povezan ali je povezan z ničelno vrednostjo. |
Vse zgornje metode podpira vmesnik zemljevida. Upoštevajte, da so metode, ki so videti zasenčene, nove metode, ki so bile vključene v Java 8.
Izvajanje zemljevida Java
Naslednji program izvaja primer zemljevida v Javi. Tu uporabljamo večino zgoraj obravnavanih metod.
Primer prikazuje različne operacije pridobivanja, postavljanja in nastavljanja.
import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class Main { public static void main(String() args) { //create a map Map country_map = new HashMap(); //assign values to the map country_map.put('IND', 'India'); country_map.put('SL', 'Srilanka'); country_map.put('CHN', 'China'); country_map.put('KOR', 'Korea'); country_map.put(null, 'Z'); // null key country_map.put('XX', null); // null value String value = country_map.get('CHN'); // get System.out.println('Key = CHN, Value : ' + value); value = country_map.getOrDefault('XX', 'Default Value'); //getOrDefault System.out.println('
Key = XX, Value : ' + value); boolean keyExists = country_map.containsKey(null); //containsKey boolean valueExists = country_map.containsValue('Z'); //containsValue System.out.println('
null keyExists : ' + keyExists + ', null valueExists= ' + valueExists); Set entrySet = country_map.entrySet(); //entrySet System.out.println('
entry set for the country_map: ' + entrySet); System.out.println('
Size of country_map : ' + country_map.size()); //size Map data_map = new HashMap(); data_map.putAll(country_map); //putAll System.out.println('
data_map mapped to country_map : ' + data_map); String nullKeyValue = data_map.remove(null); //remove System.out.println('
null key value for data_map : ' + nullKeyValue); System.out.println('
data_map after removing null key = ' + data_map); Set keySet = country_map.keySet(); //keySet System.out.println('
data map keys : ' + keySet); Collection values = country_map.values(); //values System.out.println('
data map values : ' + values); country_map.clear(); //clear System.out.println('
data map after clear operation, is empty :' + country_map.isEmpty()); } }
Izhod:
Ključ = CHN, vrednost: Kitajska
Ključ = XX, vrednost: nič
null keyExists: true, null valueExists = true
vnos nastavljen za zemljevid_ države: (null = Z, XX = null, CHN = China, SL = Srilanka, IND = India, KOR = Korea)
Velikost zemljevida: 6
data_map preslikana na map_ države: {null = Z, XX = null, CHN = China, SL = Srilanka, IND = India, KOR = Kore
do}
ničelna vrednost ključa za data_map: Z
data_map po odstranitvi ničelnega ključa = {XX = null, CHN = Kitajska, SL = Srilanka, IND = Indija, KOR = Koreja}
ključi podatkovne karte: (null, XX, CHN, SL, IND, KOR)
vrednosti zemljevida podatkov: (Z, null, Kitajska, Srilanka, Indija, Koreja)
podatkovni zemljevid po jasnem delovanju je prazen: true
Razvrščanje zemljevida v Javi
Ker je zemljevid sestavljen iz parov ključ / vrednost, ga lahko razvrstimo po ključih ali vrednostih.
V tem razdelku bomo razvrstili zemljevid tako na ključih kot na vrednostih.
Razvrsti po ključu
Za razvrščanje zemljevida po tipkah lahko uporabimo drevesni zemljevid. Drevesni zemljevid samodejno razvrsti tipke. Spodnji program Java pretvori zemljevid v drevesni zemljevid in prikaže razvrščene tipke.
import java.util.HashMap; import java.util.Map; import java.util.TreeMap; public class Main { public static void main(String() args) { //declare and initialize a map Map country_map = new HashMap(); country_map.put('I', 'India'); country_map.put('C', 'China'); country_map.put('A', 'America'); country_map.put('D', 'Denmark'); country_map.put('X', 'Hongkong'); //print original map System.out.println('Original Unsorted Map: '); display_map(country_map); System.out.println('
Map sorted by Key: '); //convert map to treemap and display it in which keys are auto sorted Map treecountry = new TreeMap(country_map); display_map(treecountry); } public static void display_map(Map map) { //obtain entry iterator and display key value pairs of map for (Map.Entry entry : map.entrySet()) { System.out.println(' ' + entry.getKey() + ' ' + entry.getValue()); } } }
Izhod:
Prvotni nesortirani zemljevid:
Amerika
C Kitajska
D Danska
X Hongkong
Jaz Indija
Zemljevid razvrščen po ključu:
Amerika
C Kitajska
D Danska
Jaz Indija
X Hongkong
Zgornji program ustvari zemljevid, sestavljen iz ene abecedne kode kot ključev in imen držav kot vrednosti. Najprej prikažemo izvirni zemljevid, ki ni razvrščen. Nato zemljevid pretvorimo v drevesni zemljevid, ki samodejno razvrsti tipke. Na koncu na ključih prikažemo razvrščeni drevesni zemljevid.
Razvrsti po vrednosti
Če želite zemljevid razvrstiti glede na vrednosti, ga najprej pretvorimo v seznam. Nato ta seznam razvrstimo z metodo Collections.sort (), ki s primerjalnikom primerja vrednosti in jih razvrsti v določenem vrstnem redu.
Ko je seznam razvrščen, se povezani vnosi na seznamu znova kopirajo na zemljevid, ki nam da razvrščen zemljevid.
Naslednji program Java prikazuje razvrščanje zemljevida glede na vrednost. Program uporablja LinkedHashMap, ki se prenese na funkcijo razvrščanja. V funkciji razvrščanja se pretvori v povezan seznam in razvrsti. Po razvrščanju se pretvori nazaj v LinkedHashMap.
kako drugačen je c od c ++
import java.util.*; public class Main { public static void main(String() args) { //define and initialize a map LinkedHashMap capitals_map = new LinkedHashMap(); capitals_map.put('NEP', 'Kathmandu'); capitals_map.put('IND', 'New Delhi'); capitals_map.put('USA', 'Washington'); capitals_map.put('UK', 'London'); capitals_map.put('AUS', 'Canberra'); //print original map System.out.println('Original unsorted map: '); System.out.println(capitals_map); //call sortMap method Map sorted_Map = sortMap(capitals_map); //print the sorted map System.out.println('
Map sorted on value : '); System.out.println(' Key Value '); for (Map.Entry entry : sorted_Map.entrySet()) { System.out.println(' ' + entry.getKey()+ ' ' + entry.getValue()); } } public static LinkedHashMap sortMap(LinkedHashMap linked_map) { //create a linkedlist from LinkedHashMap List capital_List = new LinkedList(linked_map.entrySet()); //sort the LinkedList Collections.sort(capital_List, (o1, o2) -> o1.getValue().compareTo(o2.getValue())); //Create LinkedHashMap from linkedlist and return it LinkedHashMap finalMap = new LinkedHashMap(); for (Map.Entry entry : capital_List) { finalMap.put(entry.getKey(), entry.getValue()); } return finalMap; } }
Izhod:
Prvotni nesortirani zemljevid:
{NEP = Katmandu, IND = New Delhi, ZDA = Washington, Velika Britanija = London, AUS = Canberra
Zemljevid razvrščen po vrednosti:
Ključna vrednost
IZ Canberre
NEP Katmandu
UK London
IND New Delhi
ZDA Washington
Sočasni zemljevid v Javi
ConcurrentMap je vmesnik, ki podeduje od vmesnika java.util.map. Vmesnik concurrentMap je bil prvič predstavljen v JDK 1.5 in ponuja zemljevid, ki obravnava sočasni dostop.
Vmesnik concurrentMap je del paketa java.util.concurrent.
Naslednji program Java prikazuje sočasno kartico v Javi.
import java.util.concurrent.*; class Main { public static void main(String() args) { //create and initialize concurrentHashMap ConcurrentHashMap m = new ConcurrentHashMap(); m.put(100, 'Red'); m.put(101, 'Green'); m.put(102, 'Blue'); System.out.println('
Initial Concurrent Map : ' + m); //add a key using putIfAbsent method; key=103 is absent so its added m.putIfAbsent(103, 'Purple'); System.out.println('
After adding absent key 103 : ' + m); m.remove(101, 'Green'); // remove key = 101 System.out.println('
Concurrent Map after removing 101:' + m); m.putIfAbsent(101, 'Brown'); // again add key = 101 since its absent System.out.println('
Add absent key 101:' + m); m.replace(101, 'Brown', 'Green'); // replace value for key = 101 with 'Green' System.out.println('
Replace value at key 101:' + m); } } import java.util.concurrent.*; class Main { public static void main(String() args) { //create and initialize concurrentHashMap ConcurrentHashMap m = new ConcurrentHashMap(); m.put(100, 'Red'); m.put(101, 'Green'); m.put(102, 'Blue'); System.out.println('
Initial Concurrent Map : ' + m); //add a key using putIfAbsent method; key=103 is absent so its added m.putIfAbsent(103, 'Purple'); System.out.println('
After adding absent key 103 : ' + m); m.remove(101, 'Green'); // remove key = 101 System.out.println('
Concurrent Map after removing 101:' + m); m.putIfAbsent(101, 'Brown'); // again add key = 101 since its absent System.out.println('
Add absent key 101:' + m); m.replace(101, 'Brown', 'Green'); // replace value for key = 101 with 'Green' System.out.println('
Replace value at key 101:' + m); } }
Izhod:
Začetni sočasni zemljevid: {100 = rdeča, 101 = zelena, 102 = modra}
Po dodajanju odsotne tipke 103: {100 = rdeča, 101 = zelena, 102 = modra, 103 = vijolična}
Sočasni zemljevid po odstranitvi 101: {100 = rdeča, 102 = modra, 103 = vijolična}
Dodajte odsoten ključ 101: {100 = rdeča, 101 = rjava, 102 = modra, 103 = vijolična}
Zamenjajte vrednost s tipko 101: {100 = rdeča, 101 = zelena, 102 = modra, 103 = vijolična}
Sinhronizirani zemljevid v Javi
Sinhronizirani zemljevid je zemljevid, ki je varen za nit in je podprt z določenim zemljevidom. V Javi se sinhronizirani zemljevid pridobi z uporabo metode synchronizedMap () razreda java.util.Collections. Ta metoda vrne sinhronizirani zemljevid za dani zemljevid.
Ta vrnjeni sinhronizirani zemljevid se uporablja za dostop do podpornega zemljevida za serijski dostop.
Splošna izjava metode synchronizedMap () je:
public static Map synchronizedMap(Map m)
kjer je m => podprti zemljevid.
Kot smo že omenili, ta metoda vrne sinhroniziran pogled zemljevida m.
Spodnji program Java je primer sinhroniziranega zemljevida.
import java.util.*; public class Main { public static void main(String() args) { //declare and initialize a map Map int_map = new HashMap(); int_map.put(1, 10); int_map.put(2, 20); int_map.put(3, 30); int_map.put(4, 40); int_map.put(5, 50); //print the map System.out.println('Original (backed) Map: ' + int_map); //obtain synchronized map Map sync_map = Collections.synchronizedMap(int_map); //remove an element from the map int_map.remove(3, 30); //print the altered map System.out.println('
Synchronized map after remove(3, 30):' + sync_map); } }
Izhod:
Izvirni (podprti) zemljevid: {1 = 10, 2 = 20, 3 = 30, 4 = 40, 5 = 50}
Sinhronizirani zemljevid po odstranitvi (3, 30): {1 = 10, 2 = 20, 4 = 40, 5 = 50}
Statični zemljevid v Javi
Statični zemljevid v Javi je zemljevid, ki je razglašen za statičnega tako kot statična spremenljivka. Z razglasitvijo zemljevida za statičen postane dostopna spremenljivka razreda brez uporabe predmeta.
Obstajata dva pristopa k ustvarjanju in inicializaciji statičnega zemljevida v Javi.
# 1) Uporaba statične spremenljivke
Tu ustvarimo statično spremenljivko zemljevida in jo ustvarimo skupaj z izjavo.
Ta pristop je prikazan v naslednjem programu Java.
import java.util.*; class Main { //declare a static map variable and initialize it with declaration private static final Map myMap = new HashMap(){ { put(1, 'India'); put(2, 'Portugal'); put(3, 'Germany'); } }; public static void main(String() args) { //print the map System.out.println('Static map using static map variable:'); System.out.println(myMap); } }
Izhod:
Statični zemljevid z uporabo statične spremenljivke zemljevida:
{1 = Indija, 2 = Portugalska, 3 = Nemčija}
# 2) Uporaba statičnega bloka
V tem ustvarimo statično spremenljivko zemljevida. Nato izdelamo statični blok in znotraj tega statičnega bloka inicializiramo spremenljivko zemljevida.
Spodnji program to dokazuje.
import java.util.*; class Main { // Declare the static map private static Map map; // declare a static block and initialize static map static { map = new HashMap(); map.put(1, 'Red'); map.put(2, 'Green'); map.put(3, 'Blue'); } public static void main(String() args) { System.out.println('Static Map using static block:'); System.out.println(map); } }
Izhod:
Statični zemljevid z uporabo statičnega bloka:
{1 = rdeča, 2 = zelena, 3 = modra}
Pretvorba seznama v zemljevid
V tem poglavju bomo razpravljali o metodah za pretvorbo seznama v zemljevid.
Med dve metodi spadata:
Tradicionalna metoda
V tradicionalni metodi se vsak element seznama kopira na preslikavo z zanko za vsako posamezno.
Ta izvedba je prikazana spodaj:
import java.util.*; public class Main { public static void main(String() args) { //declare and initialize a list List colorsList = new ArrayList(); colorsList.add('Red'); colorsList.add('Green'); colorsList.add('Blue'); colorsList.add('Brown'); colorsList.add('White'); System.out.println('The given list: ' + colorsList); //declare a map Map map = new HashMap(); //initial Id(key) int i=1; //assign each list element to the map for (String color : colorsList) { map.put(i, color); i++; } //print the map System.out.println('Map generated from List:' + map); } }
Izhod:
Navedeni seznam: (rdeča, zelena, modra, rjava, bela)
Zemljevid, ustvarjen s seznama: {1 = rdeča, 2 = zelena, 3 = modra, 4 = rjava, 5 = bela}
Seznam za zemljevid v Javi 8
Uporabimo lahko tudi metodo Java 8 Collectors.mapOf (), ki bo dani seznam pretvorila v zemljevid.
Spodnji program to dokazuje.
import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.stream.Collectors; // class for list class Subject { //sub_id => map key private Integer sub_id; // sub_name => map value private String sub_name; // Subject constructor public Subject(Integer sub_id, String sub_name) { // initialize sub_id and sub_name this.sub_id = sub_id; this.sub_name = sub_name; } // return sub_id public Integer getSub_Id() { return sub_id; } // return sub_name public String getSub_Name() { return sub_name; } } public class Main { public static void main(String() args) { // create a list and add values to the list List sub_list = new ArrayList(); sub_list.add(new Subject(1, 'Abacus')); sub_list.add(new Subject(2, 'Maths')); sub_list.add(new Subject(3, 'Physics')); sub_list.add(new Subject(3, 'Chemistry')); //use Java 8 Collectors.toMap() method to create a map and assign list elements to it LinkedHashMap sub_map = sub_list.stream() .collect( Collectors.toMap(Subject::getSub_Id, Subject::getSub_Name,(x, y) -> x + ', ' + y, LinkedHashMap::new)); //print the map System.out.println('Map obtained from list : ' + sub_map); } }
Izhod:
Zemljevid pridobljen s seznama: {1 = Abacus, 2 = Matematika, 3 = Fizika, Kemija}
najboljši youtube video v mp3 pretvornik
V tem programu imamo predmet Predmet, ki deluje kot razredni seznam. Razred Predmet ima dve polji, to je sub_id in sub_name. Imamo metode za branje vrednosti polja iz razreda. V glavni funkciji ustvarimo predmete tega razreda in sestavimo seznam.
Ta seznam se nato pretvori v zemljevid z uporabo metode Collectors.MapOf, ki zajema elemente enega za drugim. Sub_Id je tudi ključ do zemljevida. Končno se ustvari zemljevid, ki ima pod_Id kot ključ in Sub_Name kot vrednost.
Pretvori zemljevid v niz v Javi
Zbirko zemljevidov je mogoče pretvoriti v niz z dvema pristopoma:
Uporaba StringBuilder
Tu ustvarimo objekt StringBuilder in nato kopiramo pare ključ / vrednost zemljevida v objekt StringBuilder. Nato predmet StringBuilder pretvorimo v niz.
Spodnji program prikazuje kodo Java za pretvorbo zemljevida v niz.
import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String() args) { //create and initialize a map Map numberNames = new HashMap(); numberNames.put(10, 'Ten'); numberNames.put(20, 'Twenty'); numberNames.put(30, 'Thirty'); numberNames.put(40, 'Forty'); //print the given map System.out.println('The given map: ' + numberNames); //create a StringBuilder object to store string StringBuilder map_String = new StringBuilder('{'); //append key-value pair of map to StringBuilder object for (Integer key : numberNames.keySet()) { map_String.append(key + '=' + numberNames.get(key) + ', '); } map_String.delete(map_String.length()-2, map_String.length()).append('}'); //print the string from StringBuilder System.out.println('
The string representation of map:'); System.out.println(map_String.toString()); } }
Izhod:
Dani zemljevid: {20 = dvajset, 40 = štirideset, 10 = deset, 30 = trideset}
Nizna predstavitev zemljevida:
{20 = dvajset, 40 = štirideset, 10 = deset, 30 = trideset}
Uporaba Java 8 Streams
Pri tej metodi ustvarimo tok iz ključev zemljevida in ga nato pretvorimo v niz.
Spodnji program prikazuje pretvorbo zemljevida v niz z uporabo tokov.
import java.util.*; import java.util.stream.Collectors; public class Main{ public static void main(String() args) { //create and initialize a map Map numberNames = new HashMap(); numberNames.put(10, 'Ten'); numberNames.put(20, 'Twenty'); numberNames.put(30, 'Thirty'); numberNames.put(40, 'Forty'); //print the given map System.out.println('The given map: ' + numberNames); String map_String = numberNames.keySet().stream() .map(key -> key + '=' + numberNames.get(key)) .collect(Collectors.joining(', ', '{', '}')); //print the string System.out.println('
The string representation of map:'); System.out.println(map_String); } }
Izhod:
Dani zemljevid: {20 = dvajset, 40 = štirideset, 10 = deset, 30 = trideset}
Nizna predstavitev zemljevida:
{20 = dvajset, 40 = štirideset, 10 = deset, 30 = trideset}
Pretvori zemljevid v seznam v Javi
Zemljevid je sestavljen iz ključev in vrednosti, medtem ko je seznam zaporedje posameznih elementov. Pri pretvorbi zemljevida v seznam običajno pretvorimo ključe v seznam ključev in vrednosti v seznam vrednosti.
Naslednji program Java prikazuje to pretvorbo.
import java.util.*; public class Main { public static void main(String() args) { //declare a map and initialize it Map color_map = new HashMap(); color_map.put(10, 'red'); color_map.put(20, 'green'); color_map.put(30, 'blue'); color_map.put(40, 'cyan'); color_map.put(50, 'magenta'); //print the list of keys using map.keySet() method System.out.println('List of keys from the given map:'); List key_list = new ArrayList(color_map.keySet()); System.out.println(key_list); //print the list of values using map.values() method System.out.println('
List of values from the given map:'); List val_list = new ArrayList(color_map.values()); System.out.println(val_list); } }
Izhod:
Seznam ključev z danega zemljevida:
(50, 20, 40, 10, 30)
Seznam vrednosti z danega zemljevida:
(magenta, zelena, modra, rdeča, modra)
Slovar Vs. Zemljevid v Javi
Pogovorimo se o nekaterih glavnih razlikah med slovarjem in zemljevidom v Javi.
Slovar | Zemljevid |
---|---|
Slovar je abstraktni razred. | Zemljevid je vmesnik. |
Razredi in metode, ki jih uporablja slovarski razred, predstavljajo okvir zbirk. | Razredi in metode, ki jih uporabljajo razredi zemljevidov, so del okvira zbiranja. |
Če razred razširi slovar, ne more razširiti nobenega drugega razreda, ker Java podpira samo eno dedovanje | Zemljevid je vmesnik, zato lahko razred podeduje po zemljevidu in drugih vmesnikih |
Stara izvedba. V novejših različicah Jave skoraj zastarel. | Zemljevid vmesnik je nadomestil izvajanje slovarja. |
Pogosto zastavljena vprašanja
V # 1) Zakaj v Javi uporabljamo vmesnik zemljevida?
Odgovor: Zemljevid je vmesnik v Javi, ki ga izvajajo razredi, ki podatke shranjujejo kot pare ključ-vrednost. Vmesnik zemljevida ponuja operacije / metode, ki jih je mogoče izvesti na parih ključ / vrednost, kot so vstavljanje, posodabljanje, brisanje itd.
Q # 2)Kaj pomeni MAP v Javi?
Odgovor: Zemljevid v Javi predstavlja preslikavo ključa z določeno vrednostjo. Zemljevid Java shrani te pare ključ / vrednost na zemljevidu. Z uporabo ključa na zemljevidu lahko poiščemo in pridobimo vrednost, povezano s ključem.
Zemljevid je v Java implementiran z vmesnikom, ki ni del vmesnika Collection. Toda zemljevid je zbirka.
Q # 3)Kaj dobi MAP?
Odgovor: Get () je metoda, ki jo nudi vmesnik zemljevida v Javi in se uporablja za pridobivanje vrednosti, povezane z določenim ključem, ki je naveden kot argument metode get (). Če vrednost ni prisotna, se vrne nič.
Q # 4)Je zemljevid zbirka?
Odgovor: Čeprav se na zemljevid na splošno gleda kot na zbirko, v njem ni vmesnika Zbirka. Nekatere izvedbe map, na primer dreemap, ne podpirajo ničelnih vrednosti ali ključev.
V # 5)Kakšna je razlika med setom in zemljevidom?
Odgovor: Set je zbirka le ključev, medtem ko je zemljevid zbirka parov ključ / vrednost. Čeprav niz ne dovoljuje ničelnih vrednosti, nekatere izvedbe zemljevida dovoljujejo ničelne vrednosti.
Set ne dovoljuje podvojenih ključev. Zemljevid lahko dopušča podvojene vrednosti, ključi pa morajo biti unikatni. Set se običajno uporablja, kadar želimo shraniti zbirko unikatnih elementov. Zemljevid lahko uporabimo, kadar moramo podatke shraniti v obliki parov ključ-vrednost.
Zaključek
V tej vadnici smo razpravljali o osnovah vmesnika zemljevida. Ogledali smo si tudi različne metode in vse druge podrobnosti, povezane z vmesnikom zemljevida v Javi. Spoznali smo, da obstajajo različne izvedbe vmesnikov zemljevidov, vključno z drevesno karto, hashmapom itd.
V naslednjih vajah bomo podrobneje razpravljali o tej izvedbi zemljevida.
=> Obiščite tukaj, če se želite naučiti Jave iz nič.
Priporočeno branje
- Kaj je HashMap v Javi?
- TreeMap v Javi - Vadnica z primeri Java TreeMap
- LinkedHashMap v Javi - primer in izvedba LinkedHashMap
- Nastavitev vmesnika v Javi: Vadnica za nastavitev Java s primeri
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic
- Vadnica za Java Stack: Implementacija razreda skladov s primeri
- Vadnica za odsev Java s primeri
- Nazobčan niz v Javi - Vadnica s primeri