Map集合
Map 保存的是键值对,键要求保持唯一性,值是可以重复。
Map的三种遍历方法
键找值
Map<String,String> map=new HashMap<>();
map.put("1","12");
map.put("2","34");
map.put("3","56");
Set<String> keys = map.keySet();
for (String key : keys){
String value= map.get(key);
System.out.println(key+","+value);
}
主要思路:先用一个set集合把map的键获取出来,再通过get方法来得到值,最后用增强for遍历
并打印出来。
键值对
Map<String,String> map=new HashMap<>();
map.put("1","12");
map.put("2","34");
map.put("3","56");
Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String, String> entry: entries ){
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+","+value);
主要思路:先用一个entries获取出map集合的一对键值对,再通过getkey,getvalue分别获取相应的
键和值,最后过增强for打印。
lambda表达式
Map<String,String> map=new HashMap<>();
map.put("1","12");
map.put("2","34");
map.put("3","56");
map.forEach(( key, value) -> System.out.println(key+value));
这个用到了匿名内部类,详细可以去深入了解。
综上:这就是Map集合的3种遍历方法。
HashMap
这个东西和之前Hashset用法类似,底层都是哈希表=》数组+链表+红黑树。
比较对象的属性值要注意重写hashcode方法
有时会出现哈希碰撞(概率极低)
LinkedHashMap
LinkedHashMap与HashMap区别在于LinkedHashMap多了一个有序存放键值对的特点。
底层多了一个双链表记录存储顺序。
TreeMap
同样类似于TreeSet。
--->对于数值类型:integer,double从小到大排序
--->对于字符,字符串:按照Ascll码表中数字的升序排序(看第一个数字)