Map集合

本文详细介绍了Java集合框架中的Collection和Map的区别,包括Map的特点、常用方法以及各种实现类,如HashMap、TreeMap和LinkedHashMap等。此外,还探讨了Map与Set的关系以及学习集合框架的层次结构。强调了HashMap和Hashtable在安全性、null值处理等方面的差异,并提供了遍历Map的示例代码。

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...)

                这些类名是什么,它们分别属于哪个接口。

第三层:这些实现类有什么区别?(面试使用)

第四层:看源码,或者尝试模仿源码。(面试使用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值