1.collection和map的区别?
- collection表示的是一组对象
- Map表示的一组键值对(key, vaule)
Map特点:key不允许重复,value允许重复
如果key重复了,后面的value会覆盖前面的value
2.Map的方法
1)添加
V put(K key, V value)
void putAll(Map<? extends K, ? extends V> m)
2)删除
void clear()
V remove(Object key)
3) 修改
没有,就是重新put,而且只能修改value,不能修改key.如果key被修改了,会导致原来的数据找不到,也删除不掉。
4)查询
V get(Object key)
boolean containsKey(Object key)
boolean containsValue(Object value)
boolean isEmpty()
5) 遍历
Set<K> keySet(): 获取所有的key,然后遍历所有的key
Collection<V> values(): 获取所有的value,然后遍历所有的value
Set<Map.Entry<K,V>> entrySet():遍历所有的键值对(key, value),Map中所有的键值对(key, value)都是Map.Entry接口的实现类
HashMap<String, Integer> map = new HashMap<>();
map.put("zhangsan", 100);
map.put("lisi", 89);
map.put("qianwu", 12);
//为什么用set集合装key,是因为所有的key不重复
Set<String> keys = map.keySet();
for (String key : keys) {
System.out.println(key);
}
HashMap<String, Integer> map = new HashMap<>();
map.put("zhangsan", 100);
map.put("lisi", 89);
map.put("qianwu", 12);
Collection<Integer> values = map.values();
for (Integer value : values) {
System.out.println(value);
}
HashMap<String, Integer> map = new HashMap<>();
map.put("zhangsan", 100);
map.put("lisi", 89);
map.put("qianwu", 12);
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
System.out.println(entry.getKey() + "," + entry.getValue());
}
3.Map集合的实现类
Map的实现类有:
HashMap:哈希表
TreeMap:红黑树,可以实现key的排序(大小排序)
LinkedHashMap:是HashMap的子类,可以维护(key,value)的添加顺序
Hashtable:哈希表
Properties:key和value都是string
HashMap和Hashtable的区别:
1)时间问题:HashMap新,Hashtable:古老,早
2)线程安全问题l:Hashtable线程安全,Hashtable线程不安全。
3)关于null值:Hashtable:不允许key,value为null。 允许key,value为null
4.Map集合和Set集合的关系
Set的内部实现其实是一个Map,即HashSet的内部实现是一个HashMap,TreeSet的内部实现是一个TreeMap,LinkedHashSet的内部实现是一个LinkedHashMao。
为什么底层要用Map? 因为Map和Set有一个共同特点:set不允许元素重复,map的key不允许重复。所以Set其实就是取map的key。
set只有key,value用什么表示? 底层map的value是一个PRESENT常量对象,因为PRESENT是同一个,所以就多了一个对象而已,但是通过再次封装,产生了新的一组集合。
5.如何学习集合
第一层:掌握Collection,List,Map三个接口方法
第二层:掌握List的接口实现类(ArraryList,LinkedList...)
掌握Set接口的实现类(HashSet,TreeSet...)
掌握Map接口的实现类(HashMap,TreeMap...)
这些类名是什么,它们分别属于哪个接口。
第三层:这些实现类有什么区别?(面试使用)
第四层:看源码,或者尝试模仿源码。(面试使用)
本文详细介绍了Java集合框架中的Collection和Map的区别,包括Map的特点、常用方法以及各种实现类,如HashMap、TreeMap和LinkedHashMap等。此外,还探讨了Map与Set的关系以及学习集合框架的层次结构。强调了HashMap和Hashtable在安全性、null值处理等方面的差异,并提供了遍历Map的示例代码。

1627

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



