標籤:集合 map java
/*Map-- |--Hashtable:底層是雜湊表資料結構,不可以存入null鍵null值。線程同步。 |--HashMap:底層是雜湊表資料結構,可以存入null鍵null值。線程不同步。 |--TreeMap:底層是二叉樹資料結構,線程不同步。可以給鍵排序 */package pack;import java.util.Comparator;import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.TreeMap;/*public class Main { public static void main(String[] args) { Map<Integer,String> map = new HashMap<Integer,String>(); map.put(1, "java1"); //增 map.put(2, "java2"); map.put(3, "java3"); map.remove(4); //刪 //sys(map.containsKey(1)); //判 //sys(map.get(2)); //查 //sys(map); 查方法一:通過Set集合中的迭代器得到鍵,再通過get方法得到值 Set<Integer> s = map.keySet(); for(Iterator<Integer> it = s.iterator();it.hasNext(); ) { sys(map.get(it.next())); } Collection coll = map.values(); for(Iterator<Integer> it = coll.iterator();it.hasNext(); ) { sys(it.next()); } sys("---------------"); 查方法二:將Map集合中的映射關係取出,存到Set集合中 Set<Map.Entry<Integer, String>> entryset = map.entrySet(); Iterator<Map.Entry<Integer, String>> it = entryset.iterator(); while(it.hasNext()) { Map.Entry<Integer, String> me = it.next(); sys(me.getValue()); sys(me.getKey()); } } public static void sys(Object obj) { System.out.println(obj); }}*//*在TreeSet中傳入對象參數,按年齡排序*/public class Main { public static void main(String[] args) { TreeMap<Person,Integer> ts = new TreeMap<Person,Integer>(new MyComparator()); ts.put(new Person("java1",1), 01); ts.put(new Person("java3",3), 03); ts.put(new Person("java2",2), 02); ts.put(new Person("java4",4), 04); Set<Map.Entry<Person,Integer>> entryset = ts.entrySet(); Iterator<Map.Entry<Person,Integer>> it = entryset.iterator(); while(it.hasNext()) { Map.Entry<Person,Integer> me = it.next(); Person per = me.getKey(); Integer age1 = me.getValue(); sys(per+"..."+age1); } } public static void sys(Object obj) { System.out.println(obj); }}class Person { private String name; private int age; Person(String name,int age) { this.name = name; this.age = age; } public int getAge() { return age; } public String getName() { return name; }}class MyComparator implements Comparator<Person> { public int compare(Person p1,Person p2) { int a = new Integer(p1.getAge()).compareTo(new Integer(p2.getAge())); if(a==0) { //比較與前面行的區別,Integer與String有compareTo方法,而int沒有 return p1.getName().compareTo(p2.getName()); } return a; }}
java集合架構---Map總結