HashMapDemo.java
public class HashMapDemo { public static void main(String[] args) { // 键值对集合,键不可以重复 Map<String, Integer> map = new HashMap<>(); // 倒序插入100个数 int i =100; while (i-->0){ map.put(""+i, i); } // 查询 for (String str : map.keySet()) { // 这里会乱序输出 System.out.println(str); } } }输出如下所示:很乱
TreeMapDemo.java
public class MapDemo { public static void main(String[] args) { // TreeMap Map<String, Integer> map1 = new TreeMap<>(); // 连续倒序插入100个数 int k =100; while (k-->0){ map1.put(""+k, k); } // 查询 for (String str : map1.keySet()) { // 这里会正序输出 System.out.println(str); } } }输出如下所示:
细心的你们,应该会发现上面的输出有点别致
那是因为这里的键key(0~99)其实不是整型,而是字符串类型,所以排序按照字符串的升序来排,才会出现如图所示的结果
(建议实际场景不要这样搞,容易出事,字符串尽量不要用纯数字,而是要跟字母做拼接;)
正确的做法是key=“a”+i,这种方式
LinkedHashMapDemo.java
public class MapDemo { public static void main(String[] args) { // LinkedHashMap Map<String, Integer> map2 = new LinkedHashMap<>(); // 倒序插入100个数 int j =100; while (j-->0){ map2.put("a"+j, j); } for (String str : map2.keySet()) { // 这里按照插入的顺序依次输出 System.out.println(map2.get(str)); } } }输出如下所示:
总结Map一般用到的有HashMap,TreeMap,LinkedHashMap,当然还有并发相关的,这里入门级别的先不涉及(比如ConcurrentHashMap)
HashMap的插入和访问都很快,但是内部是无序排列
TreeMap的插入和访问都很慢,但是内部是有序排列,默认按key升序排列
LinkedHashMap拥有HashMap的大部分优点,而且还可以按照元素插入的顺序来访问元素,但是性能会比HashMap差
后记最后,感谢大家的观看,谢谢