Java中的映射Map - 入门篇 (2)

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); } } }

输出如下所示:很乱

HashMap输出乱序

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); } } }

输出如下所示:

TreeMap输出正序

细心的你们,应该会发现上面的输出有点别致

那是因为这里的键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)); } } }

输出如下所示:

LinkedHashMap按插入顺序输出

总结

Map一般用到的有HashMap,TreeMap,LinkedHashMap,当然还有并发相关的,这里入门级别的先不涉及(比如ConcurrentHashMap)

HashMap的插入和访问都很快,但是内部是无序排列

TreeMap的插入和访问都很慢,但是内部是有序排列,默认按key升序排列

LinkedHashMap拥有HashMap的大部分优点,而且还可以按照元素插入的顺序来访问元素,但是性能会比HashMap差

后记

最后,感谢大家的观看,谢谢

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwpxy.html