Java进阶核心之集合框架Map下集·18
- 常见的Map API语法
常见的Map API语法 package chapter8_4; import java.util.*; /** * @ClassName: MapTest * @Author: mr.chen * @Date:2021/5/2 * @Version: 1.0 **/ public class MapTest { public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); // {B转转=对象6, C转转=对象4, G转转=对象1, D转转=对象3, A陈煜燊=对象2} // TreeMap<String,String> map = new TreeMap<>(); // {A陈煜燊=对象2, B转转=对象6, C转转=对象4, D转转=对象3, G转转=对象1} // LinkedHashMap <String,String> map = new LinkedHashMap<>(); // {A陈煜燊=对象2, D转转=对象3, G转转=对象1, B转转=对象6, C转转=对象4} // 往map里面放key-value下 map.put("A陈xx", "对象2"); map.put("D转转", "对象3"); map.put("G转转", "对象1"); map.put("B转转", "对象6"); map.put("C转转", "对象4"); System.out.println(map); System.out.println("=============================="); // 根据key获取value String n = map.get("陈xx"); System.out.println(n); //判断是否包含某个key boolean isContains = map.containsKey("陈xx"); System.out.println(isContains); // 返回map的元素数量 int size = map.size(); System.out.println(size); //清空map容器 map.clear(); //获取所有value的集合 Collection<String> collection = map.values(); System.out.println(collection); //获取所有key的集合 Set<String> set = map.keySet(); System.out.println(set); //返回⼀个Set集合,集合的类型为Map.Entry , 是Map声明的⼀个内部接⼝,接⼝为泛型,定义为Entry<K,V>, //它表示Map中的⼀个实体(⼀个key-value对),主要有getKey(),getValue⽅法 Set<Map.Entry<String, String>> entrySet = map.entrySet(); for (Map.Entry entry : entrySet) { System.out.println("key: " + entry.getKey() + ",values: " + entry.getValue()); } //判断map是否为空 boolean isEmpty = map.isEmpty(); System.out.println(isEmpty); } }
Map⾯试题
HashMap和TreeMap应该怎么选择
HashMap可实现快速存储和检索,但缺点是包含的元素是⽆序的,适⽤于在Map中插⼊、删除和定位元素.
TreeMap能便捷的实现对其内部元素的各种排序,但其⼀般性能⽐HashMap差,适⽤于按⾃然顺序或⾃定义顺序遍历键(key)
jdk1.7和jdk1.8中HashMap的主要区别
底层实现由之前的 “数组+链表” 改为 “数组+链表+红⿊树”
什么时候开始转变
当链表节点较少时仍然是以链表存在,当链表节点较多时,默认是⼤于8时会转为红⿊树
Bug? 不存在的!