Java Map
ဒီေန႕ Oracle က နမူနာျပထားတဲ႔ Map ကို ခဏေလာက္ျပန္ၾကည္႕ရင္းသေဘာက်တာနဲ႕ ဒီမွာတင္ထားလိုက္တယ္။
import java.util.*; public class PhoneList {
public static void main(String args[]) {
// Create map - maintain insertion order
Map map = new LinkedHashMap();
သူ႕ရဲ႕ comment ေတြကိုၾကည္႕ရင္ကို နားလည္ႏိုင္ပါတယ္။ Insert လုပ္တဲ႔အခါ ပထမဆံုး ထည္႕တဲ႔ record က ပထမ ေနရာမွာရိွေနခ်င္တယ္ဆိုရင္၊ တစ္နည္းအားျဖင္႔ order ကို မွတ္ထားခ်င္တယ္ဆိုရင္ LinkedHasMap ကိုသံုးရပါတယ္။ ဒါမ်ိဳးေတြက SCJP မွာေမးတတ္ပါတယ္။
// Add members
map.put("George", "202-456-1111");
map.put("Bill", "212-348-8882");
map.put("Hillary", "202-224-4451");
map.put("Elvis", "901-332-3322");
map.put("Jimmy", "229-924-6935");
ဒီေနရာမွာ map ထဲကို id နဲ႕ value ထည္႕ပါတယ္။ ဒီေနရာမွာ Phone List လုပ္ေနတာဆိုေတာ႔ လူနာမည္နဲ႕ ဖံုးနံပါတ္အတြဲလုိက္ေလးေတြထည္႕ပါတယ္။ဒါေတြကို Array နဲ႕လုပ္လည္းရပါတယ္။ Map ရဲ႕အားသာခ်က္ေတြကေတာ႔ အမ်ားၾကီးရိွပါတယ္။ အထူးသျဖင္႔ Object ေတြကို 2D, 3D လုပ္တဲ႔အခါလြယ္ပါတယ္။ map တစ္ခုထဲမွာ map ေတြထပ္ထည္႕ခ်င္လည္းရပါတယ္။ dimension မ်ားလာရင္ ပိုျပီး လြယ္ကူေစပါတယ္။ Objects ေတြကိုလည္း အဆင္ေျပေျပသံုးႏုိင္ပါတယ္။ http://en.wikipedia.org/wiki/Hash_table Hash table ေတြရဲ႕ structure နဲ႕ pros and cons ေတြကို အဲဒီမွာဖတ္လို႕လည္းရပါတယ္။ တစ္ခါတစ္ေလၾကရင္ ကိုယ္အဆင္ေျပတာသံုးေနၾကတာမ်ားပါတယ္။ ဘယ္လိုနည္းနဲ႕ျဖစ္ျဖစ္ အဆင္ေျပေအာင္ လုပ္ႏိုင္ၾကရင္ေကာင္းပါတယ္။ တစ္ခ်ိဳ႕ ေနရာေတြမွာ ပိုျပီးအဆင္ေျပလြယ္ကူတယ္ ဆိုတာကိုသိစရာလိုပါတယ္။
// Print map
print(map, "Insertion Order:"); Print function တစ္ခုေအာက္မွာေရးထားတာကိုေခၚတာပါပဲ။ အေပၚမွာ LinkedHashMap လုပ္ထားတဲ႔အတြက္ Add လုပ္ထားတဲ႔ order အတိုင္းထြက္လာပါတယ္။
// Convert map to regular
map = new HashMap(map);
တစ္ခါတစ္ေလၾကရင္ Data ေတြရိွေနရင္ေတာ္ျပီ ပထမဆံုးထည္႕ထားတာ ပထမဆံုးမွာရိွကိုရိွေနရမယ္ဆိုတာမ်ိဳး မလိုခ်င္ဘူးဆိုရင္ HashMap သံုးလို႕ရပါတယ္။ Hashing Order လို႕ေခၚပါတယ္။ သူအဆင္ေျပသလို ထည္႕ထားပါလိမ္႔မယ္။ ျပန္ထုတ္လိုက္ရင္ Hash Order အတုိင္းထြက္လာပါမယ္။ ေနာက္ဆံုးမွာျပထားတဲ႔ results ေတြကိုၾကည္႕ရင္ပိုျပီးသေဘာေပါက္ႏုိင္ပါတယ္။
// Print map
print(map, "Hashing Order:");
// Convert map to sorted
map = new TreeMap(map);
TreeMap လုပ္လုိက္ရင္ sort လုပ္ျပီးသားရပါမယ္။ ကိုယ္႔ဘာသာကို sorting စီေနဖုိ႕မလုိပါဘူး။
// Print map
print(map, "Sorted");
}
private static void print(Map map, String message) {
System.out.println(message);
Set entries = map.entrySet();
Iterator iterator = entries.iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry)iterator.next();
System.out.println(entry.getKey() + " : "
+ entry.getValue());
}
System.out.println();
}
}
|
No comments:
Post a Comment