Map集合Map集合是用来存储键值对数据的集合。集合中存储了两种数据,键值和值值。键值不能重复,值值可以是任意数据类型。,任何值。HashMap底层是通过哈希表实现的。因为是异步存储,线程不安全。作为键值的对象必须实现hashCode方法和equals方法,不能保证键值对存储的数据。importjava.util.*;publicclassmain{publicstaticvoidmain(String[]args){//1.Map集合方法Mapmap=newHashMap();Integeri1=map.put("张三",23);Integeri2=map.put("李三",23);Integeri3=map.put("李四",23);Integeri4=map.put("WangWu",23);//不存储相同的key,覆盖value,返回覆盖的值//map.remove("张三");//删除根据键Collectionc=map的值。价值观();System.out.println(c);//获取对象中所有的值System.out.println(map.containsKey("张三"));//是否包含传入keySystem.out.println(map.containsValue(23));//是否包含传入的值//2.遍历Map集合//方法一:(不容易)Mapmap1=newHashMap();map1.put("张三",23);map1.put("李四",23);map1.put("王舞",23);//增强的for循环for(Stringkey:map1.keySet()){//map.keyset()是所有key的集合System.out.println(key+"."+map1.get(key));}//方法二:(推荐)Mapmap2=newHashMap();map2.put("张三",11);map2.put("李四",12);map2.put("王舞",13);Set>entrySet=map2.entrySet();//将key和value封装成一个Entry对象,存储在Set集合中//获取每个对象Iterator>it=entrySet.iterator();for(Map.Entryentry:entrySet){System.out.println(entry.getKey()+""+entry.getValue());}HashMap和Hashtable的区别有一个共同点:都是双链集合,底层是hash算法区别:1.HashMap线程安全效率不高,jdk1.2版本2.Hashtable线程安全,效率低,JDK1.0版本3.hashMap可以存储空键和空值4.hashtable不能存储空键和空值LinkedHashMap和HashSet中的LinkedHashSet一样,HashMap还有一个LinkedHashMap子类,使用双向链表维护键值对的顺序,迭代顺序和插入顺序一致。TreeMap底层是通过红黑树实现的,所有的key都是通过红黑树排序的,不是线程安全的。TreeMap有两种排序方式:自然排序:TreeMap的所有键必须实现Comparable接口,并且所有键必须是同一个类的对象,否则会抛出ClassCastExcepiton异常。自定义排序:在创建TreeMap时,传入一个Comparator对象,负责对TreeMap中的所有key进行排序。使用自定义排序时,不需要Map的key实现Comparable接口。TreeMap判断两个key是否相等的标准是两个key通过equals()方法返回true,通过compareTo()方法返回0,TreeMap认为两个key相等。直接看例子:importjava.util.*;classaTreeMap{publicstaticvoidmain(String[]args){catc1=newcat("red",30);catc2=newcat("黑色",20);catc3=newcat("白色",10);catc4=newcat("白色",10);MaptreeMap=newTreeMap();treeMap.put(c1,10);treeMap.put(c2,15);treeMap.put(c3,5);treeMap.put(c4,20);for(Map.Entryentry:treeMap.entrySet()){System.out.println(entry.getKey()+"="+entry.getValue());}}}}classcatimplementsComparable{字符串颜色;整数计数;cat(Stringc,ints){颜色=c;计数=s;}publicStringtoString(){返回颜色+"猫";}@OverridepublicintcompareTo(cato){returno.count-this.count;}}运行结果:总结HashMap:适用于Map中的Insert、delete、position元素。Treemap:适用于按自然顺序或自定义顺序遍历键。