CodeGym /Java Blog /Random /Paano umulit ng isang Mapa sa Java
John Squirrels
Antas
San Francisco

Paano umulit ng isang Mapa sa Java

Nai-publish sa grupo
Sa post na ito, matututuhan natin ang iba't ibang paraan upang umulit ng isang Map sa Java. Ilan sa mga karaniwang paraan nito at kung paano gamitin ang mga iyon sa tulong ng mga halimbawa. Bago magsimula, ipinapalagay namin na naiintindihan mo ang mga interface at mapa sa Java. Gayunpaman, narito ang isang mabilis na recap para sa iyo.

Ano ang isang Mapa sa Java?

Maraming mga interpretasyon nito, ngunit hayaan nating ilagay ito sa ganitong paraan.
"Ang Map ay isang interface sa Java, na ginagamit upang mag-imbak ng data sa anyo ng mga pares ng key-value."
Kung iniisip mo kung para saan ang mga mapa? O kailan sila kailangan? Pagkatapos ay mayroong maraming mga sitwasyon sa totoong buhay kapag kailangan nating mag-imbak ng data sa mga pares ng key-value. Halimbawa, ang lahat ng mga salita na tumutugma sa isang solong titik sa isang diksyunaryo ay maaaring maimbak sa anyo ng isang mapa sa Java.
K Saranggola, Hari, Korea, Knight,..., atbp.
L Lava, Buhay, Liwanag, Pag-ibig, Lebanon,..., atbp.
Bukod dito, maaari mong tingnan ang mga sumusunod na halimbawa upang mas maunawaan ito.
Susi Halaga
Family ID Miyembro ng pamilya
Pangalan ng klase Mga Student ID
Pangalan ng Lugar Mga Zip Code
Block ng Area Mga Numero ng Bahay

Bakit kailangan nating umulit sa pamamagitan ng isang Mapa?

Kailangan nating dumaan o umulit sa isang mapa para sa pag-access, pagbabago o pag-alis ng data. Tuklasin natin ang ilan sa mga opsyon na mayroon tayo.

Ano ang ilang mga karaniwang paraan upang umulit ng isang Mapa sa Java?

Kahit na mayroong maraming mga paraan upang tumawid sa isang mapa. Gayunpaman, magtutuon kami ng pansin sa mga pinaka-epektibo at simpleng paraan.
  1. Ang Paraan ng ForEach Loop
  2. Ang pamamaraan ng Iterators
Mangyaring hanapin ang pagpapatupad ng parehong mga pamamaraan sa ibaba.

Gamit ang paraang Foreach Loop

Halimbawa


import java.util.Map;
import java.util.HashMap;

public class ForEachDemo {

	public static void main(String[] args) {

		Map<String, String> businessDays = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		businessDays.put("1", "Monday");
		businessDays.put("2", "Tuesday");
		businessDays.put("3", "Wednesday");
		businessDays.put("4", "Thursday");
		businessDays.put("5", "Friday");

		// Iterating over the Map.entrySet() using map.forEach
		for (Map.Entry<String, String> entry : businessDays.entrySet()) 
		{
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue()); 
		}
	}
}

Output

key = 1, value = Monday key = 2, value = Tuesday key = 3, value = Wednesday key = 4, value = Thursday key = 5, value = Friday

Paliwanag

Sa halimbawang ito ginamit namin ang foreach loop upang umulit sa mapa. Sa pamamagitan ng paggamit ng for-each loop, nakakakuha kami ng entrySet() na nagbibigay ng automated na "view" ng data sa mapa, sa anyo ng mga key-value pairs. Ang bawat entrySet ay naglalaman ng isang susi at mga katumbas na halaga. Kung saan maaari mong gamitin ang lahat ng paraan ng Map.Entry<key, value> ayon sa iyong mga kinakailangan. Dito, ginamit lang namin ang getKey() at getValue() para ipakita ang data sa console. Bilang isang ehersisyo, maaari mong tuklasin ang iba pang mga pamamaraan upang palakasin ang iyong utos sa konseptong ito.

Gamit ang pamamaraan ng Iterators

Halimbawa


import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class MapIterator {

	public static void main(String[] args) {

		Map<String, String> monthsInAYear = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		monthsInAYear.put("1", "January");
		monthsInAYear.put("2", "February");
		monthsInAYear.put("3", "March");
		monthsInAYear.put("4", "April");
		monthsInAYear.put("5", "May");
		monthsInAYear.put("6", "June");
		monthsInAYear.put("7", "July");
		monthsInAYear.put("8", "August");
		monthsInAYear.put("9", "September");
		monthsInAYear.put("10", "October");
		monthsInAYear.put("11", "November");
		monthsInAYear.put("12", "December");

		// iterate map / traverse the map using using iterator
		Iterator<Map.Entry<String, String>> iterator = monthsInAYear.entrySet().iterator();

		while (iterator.hasNext()) 
		{
			// check if next entry exists in the map
			Map.Entry<String, String> entry = iterator.next(); 
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());

		}
	}
}

Output

key = 11, value = November key = 1, value = January key = 12, value = December key = 2, value = February key = 3, value = March key = 4, value = April key = 5, value = May key = 6, value = June key = 7, value = July key = 8, value = August key = 9, value = September key = 10, value = Oktubre

Paliwanag

Sa halimbawang ito, gumawa kami ng tahasang iterator upang tumawid / umulit sa mapa. Una, kailangan mong i-import ang iterator class, at pagkatapos ay kunin ang iterator para sa entrySet. Ngayon ay tumawid sa mapa habang patuloy na sinusuri ang susunod na entity na umiiral sa mapa. ayan na! Kumpleto na iyong traversal, ganoon na lang.

Mas mahusay ba ang Foreach loop kaysa sa pamamaraan ng iterator?

Hindi mahalaga kung aling paraan ang iyong ginagamit para sa pagtawid ng isang mapa hangga't ginagawa nito ang trabaho para sa iyo. Sa mga tuntunin ng pagganap, parehong para sa bawat loop at ang mga iterator ay may parehong kumplikadong oras . Kaya walang mas mahusay kaysa sa isa, depende ito sa kung ano ang kailangan mong gamitin at kung kailan.

Ano ang pagkakaiba ng dalawang pamamaraan?

Ang para sa bawat loop ay hindi nagpapahintulot na i-update/baguhin ang data sa mapa. Sa kabaligtaran, madali mong mababago ang data gamit ang mga iterator. Pinapadali ka ng klase ng iterators sa pamamagitan ng pagbibigay ng pagpapatupad upang i-edit/alisin ang data sa mapa. Sa kabaligtaran, kung susubukan mong i-edit/tanggalin ang data ng mapa gamit ang for-each loop, ito ay magtapon ng ConcurrentModificationException . Ang dahilan nito ay ang para sa bawat loop ay tahasang lumilikha ng isang iterator, na hindi nakalantad sa gumagamit. Samakatuwid, wala kang access upang baguhin o tanggalin ang anumang data.

Aling paraan ng traversal ang gagamitin at kailan?

Kung hindi ka sigurado kung gagamitin ang para sa bawat isa o ang mga iterator upang ulitin ang iyong mapa, maaari mong gawin ang mga sumusunod na mungkahi.
  • Gamitin ang iterator kung kailangan mong baguhin ang mapa.
  • Gamitin ang para sa bawat loop kung mayroon kang mga nested na loop (upang maiwasan ang pagiging kumplikado).

Konklusyon

Sa pagtatapos ng post, umaasa kaming natutunan mo kung paano umulit ng mapa sa Java. Hinihikayat kang gawin ang mga ito at subukan din ang iba pang mga paraan ng paglalakbay. Huwag mag-atubiling tumalon pabalik o mag-post ng mga tanong sa tuwing nahihirapan ka. Hanggang doon, maligayang pag-aaral!
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION