欸,最近不是准备秋招嘛,刚好就复习到了集合这边;在开始玩集合的时候,欸感觉遍历很简单。然后就开始map了,都快学完了,突然想起来有点没总结,然后就是开始总结啊。总结到遍历的时候,我愣了一下,欸,hashMap有哪些遍历方式来着,短路了,于是就没事干写了这篇文章。请各位大佬有补充或者更正的话,欢迎补充、更正!
首先就是迭代器奥,都知道迭代器是用来遍历集合的,说到这里就想到了这玩意。因为我之前学的时候老师就说过map可以看作一种k-v对的数组嘛,所以我认为遍历map比如hashMap肯定也能用到嘛,但是map有不能像其他的集合那样直接用iterator,所以就把它转为set,然后进行遍历。比如:
Iterator<Integer> its= hashMap.keySet().iterator();
while(its.hasNext()){
Integer next = its.next();
System.out.println(next +" "+hashMap.get(next));
}
其次就是for循环奥,都知道遍历数组都会用到for循环,无论是现在的fori还是增强for,都会用到吼。然后就写一下自己的见解奥。当然还是不能直接使用for,毕竟map和正常数组不一样吧。比如:
for (Integer key:hashMap.keySet())
System.out.println(key+" "+hashMap.get(key));
然后就是foreach,我只能说这玩意用惯了是真舒服奥,就是因为这玩意使用习惯了导致把其他的都忘了。我来简单说一下,也是我之前老师提醒了。其实foreach底层就是迭代器,看反编译后的东西就知道了(好像是?)。说一下简单的使用,比如:
hashMap.forEach((k,v)->{
System.out.println(k+" "+v);
});
遍历这玩意使用了一个lambda表达式,这玩意相信各位大佬都能看懂。
最后就是entrySet那个函数。这玩意也是转为set再进行操作的,只不过呢前面的转化为set是只转化key值,然后通过key值获得value;这里就是使用了Map类下的一个成员内部类Entry。就不过多解释了,毕竟才疏学浅。看一下使用:
for(Map.Entry<Integer,Integer> v:hashMap.entrySet())
System.out.println(v.getKey()+" "+v.getValue());
2022 07 25 修改 今天又搞了一个流式编程遍历的方法
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("a","aaa");
hashMap.put("b","bbb");
hashMap.put("c","ccc");
hashMap.put("d","ddd");
hashMap.put("e","eee");
hashMap.put("f","fff");
Stream.of(hashMap).forEach(System.out::println);
个人水平也就这样了,希望各位大佬有其他的方法的可以不吝赐教,也希望各位能在上面有错误的地方进行指正。