Map接口
无序,唯一
HashMap
特点:无序。唯一,
特点是按照key进行总结的,因为底层key寻找哈希表的结构(数组+链表)
哈希表原理:如放入这个集合数据的对应的类,必须重写HashCode和equals这两个方法,否则结果就不符合唯一,无序的特点
- 添加:put(K key, V value), putAll(Map<? extends K,? extends V> m)
- 修改:
- 删除:clear(),remove(Object key)
- 查看:entrySet(), keySet(),size(),values()
- 判断: containsKey(Object key), containsValue(Object value), equals(Object o), get(Object key),isEmpty()
public static void main(String[] args) {
/*
* 添加:put(K key, V value), putAll(Map<? extends K,? extends V> m)
* 修改:
* 删除:clear(),remove(Object key)
* 查看:entrySet(), keySet(),size(),values()
* 判断: containsKey(Object key), containsValue(Object value), equals(Object o), get(Object key),isEmpty()
* */
// 思考为什么键值对,键的值是一样的,但是value缺是第一个的值
HashMap<String,Integer> map = new HashMap<>();
map.put("lili",123123);
System.out.println(map.put("nana", 12345));
map.put("feifei",34567);
System.out.println(map.put("nana", 123123));
// 清空方法
// map.clear();
// map.remove("feifei");按照key移除
System.out.println(map.size());
System.out.println(map);
System.out.println(map.containsKey("lili"));
System.out.println(map.containsValue(123123));
HashMap<String,Integer> map2 = new HashMap<>();
map.put("lili",123123);
System.out.println(map.put("nana", 12345));
map.put("feifei",34567);
System.out.println(map.put("nana", 123123));
System.out.println(map==map2);
System.out.println(map.equals(map2));//底层重写了equals比较集合中的值是否一致
System.out.println("判断是否为空"+map.isEmpty());
System.out.println(map.get("nana"));
System.out.println(map.keySet());//查看集合中所有的k
System.out.println(map.values());//查看集合中所有的v
//通过k来遍历出v
Set<String> set = map.keySet();
for (String s : set) {
System.out.print(map.get(s)+" ");
}
System.out.println();
//entrySet 得到的是一对数据
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry<String, Integer> entry : entrySet) {
System.out.println(entry);
}
}
HashMap和Hashtable
HashMap是1.2开始的,效率高,线程不安全 Key可以是空值,并且null值也遵照唯一特点
Hashtable是1.0开始的,效率低,效率安全,对于Hashtable的key不能为null值
如果我想按照加入顺序来输出,我们可以有一个LinkedHashMap
LinkedHashMap
特点,唯一,有序,按照输入顺序输出
小结
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NKBW8Kir-1637924963694)(javaSE.assets/image-20210705103514104.png)]](https://i-blog.csdnimg.cn/blog_migrate/123f068ba6eade1e196de2e13f5d1582.png)
本文介绍了Java中的HashMap数据结构,强调其无序和唯一性的特点。详细讲解了HashMap的内部实现,包括哈希表原理,以及如何通过重写HashCode和equals方法确保数据的唯一性。此外,还展示了HashMap的基本操作,如添加、修改、删除和查询元素的方法。最后,对比了HashMap与Hashtable的区别,并提及了LinkedHashMap作为保持插入顺序的选项。
256

被折叠的 条评论
为什么被折叠?



