【DateStructure】 Charnming usages of Map collection in Java
When learning the usage of map collection in java, I found serveral beneficial methods that was encountered in the daily life. Now I made a summary:
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import java.util.SortedMap;
- import java.util.TreeMap;
- public class MapUtil
- {
- private static final Map<String, String> contents = new HashMap<String, String>();
- @SuppressWarnings("unchecked")
- public static void initMap()
- {
- Map testMap = new HashMap<String, String>();
- testMap.put("Albert", "Shao");
- contents.putAll(testMap);
- }
- /**
- * Four methods to list map.
- * output:
- * Albert:Shao
- Albert:Shao
- Shao
- Albert:Shao
- * @time Jul 18, 2014 11:39:46 AM
- * @return void
- */
- public static void listMap()
- {
- Map<String, String> testMap = new HashMap<String, String>();
- testMap.put("Albert", "Shao");
- for (Map.Entry<String, String> entry : testMap.entrySet())
- {
- System.out.println(entry.getKey() + ":" + entry.getValue());
- }
- for (String key : testMap.keySet())
- {
- System.out.println(key + ":" + testMap.get(key));
- }
- for (String value : testMap.values())
- {
- System.out.println(value);
- }
- Iterator<Map.Entry<String, String>> keyIt = testMap.entrySet()
- .iterator();
- while (keyIt.hasNext())
- {
- Map.Entry<String, String> entry = keyIt.next();
- System.out.println(entry.getKey() + ":" + entry.getValue());
- }
- }
- /**
- * Use the treeMap order by key asc.
- * Watch out: if key is repeated, the latter element will replace the former.
- * output: {Apple=five, Banana=three, Grape=one, Pair=four}
- *
- * @time Jul 18, 2014 11:37:51 AM
- * @return void
- */
- public static void sort()
- {
- SortedMap<String, String> sortMap = new TreeMap<String, String>();
- sortMap.put("Pair", "four");
- sortMap.put("Apple", "two");
- sortMap.put("Grape", "one");
- sortMap.put("Banana", "three");
- sortMap.put("Apple", "five");
- System.out.println(sortMap);
- }
- /**
- * Sort the Map by map.value, then set the result to map.
- * output : [Apple=1, Pair=2, Banana=3, Grape=4]
- *
- * @time Jul 18, 2014 11:36:28 AM
- * @return void
- */
- public static void sortByValue()
- {
- Map<String, Integer> testMap = new HashMap<String, Integer>();
- testMap.put("Pair", 2);
- testMap.put("Apple", 1);
- testMap.put("Grape", 4);
- testMap.put("Banana", 3);
- List<Map.Entry<String, Integer>> entryList = new ArrayList<Map.Entry<String, Integer>>(
- testMap.entrySet());
- Collections.sort(entryList,
- new Comparator<Map.Entry<String, Integer>>()
- {
- public int compare(Map.Entry<String, Integer> c1,
- Map.Entry<String, Integer> c2)
- {
- return (c1.getValue() - c2.getValue());
- }
- });
- System.out.println(entryList);
- }
- /**
- *Sort map by value when value is object.
- * use compareTo method to replace simple '-'
- * output:[Apple=AB, Grape=AF, Pair=BB, Banana=XY]
- *
- * @time Jul 18, 2014 11:48:35 AM
- * @return void
- */
- public static void sortByObject()
- {
- Map<String, String> testMap = new HashMap<String, String>();
- testMap.put("Pair", "BB");
- testMap.put("Apple", "AB");
- testMap.put("Grape", "AF");
- testMap.put("Banana", "XY");
- List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(
- testMap.entrySet());
- Collections.sort(entryList,
- new Comparator<Map.Entry<String, String>>()
- {
- public int compare(Map.Entry<String, String> c1,
- Map.Entry<String, String> c2)
- {
- return (c1.getValue().compareTo(c2.getValue()));
- }
- });
- System.out.println(entryList);
- }
- public static void main(String[] args)
- {
- MapUtil.listMap();
- MapUtil.sort();
- MapUtil.sortByValue();
- MapUtil.sortByObject();
- }
- }
If you want to further know about the usage of list methods, you could view my another blogs.