Set集合与Map集合

Set: Collection的子接口
    特点:元素内容不可以重复 元素无序无下标
    
    常见方法:【重点】
         boolean add(E e) 向集合中添加一个元素
         boolean remove(Object o) 根据元素内容从集合中移除第1个匹配的元素
         boolean contains(Object o) 判断集合中是否包含给定的元素
         int size() 返回此 collection 中的元素数 
         Object[] toArray() 返回包含此 collection 中所有元素的数组
         
    遍历方式
        for-each遍历
        
    实现类:
        HashSet
            ① 计算元素的哈希码,然后%数组长度获取下标index
            ② 尝试将元素添加到index处,如果该位置之前没有元素占据,直接添加
                    如果该位置之前已经存有元素,则通过equals方法比较排重
        为保证HashSet添加元素内容不重复,必须保证内容相同的元素返回相同的哈希码
        自定义类型保证元素内容不重复,必须重写hashCode和equals方法
            hashCode重写要求:【重点】
                ① 内容相同的对象必须返回相同的哈希码
                ② 为保证效率,尽可能的保证内容不同的对象返回不同的哈希码
                
        LinkedHashSet    HashSet的子类
            自定义类型保证元素内容不重复,要求和HashSet一致
            可以保证获取顺序和添加顺序的一致!!!
        TreeSet
            可以根据元素内容自动的进行升序(从小到大)排列
            自定义类型使用TreeSet进行排序(包含排重)必须要实现Comparable接口
            
Map:
    特点:一个元素由2部分(key 和 value)组成,其中key不可以重复,value可以重复
    
    常见方法:【重点】
         V put(K key, V value) 添加键值对到Map集合中,如果之前Map中有相同键的键值对,则替换掉原有的值并返回
         V remove(Object key) 根据指定的键从Map中移除整个键值对,将移除的键值对的值返回
         V get(Object key) 根据key从Map中获取value,如果Map中不包含该键值对,返回null
          int size() 返回Map中键值对的数量
         boolean containsKey(Object key) 判断Map中是否包含指定的键
         boolean containsValue(Object value) 判断Map中是否包含指定的值
    
    Map的遍历
        ①键遍历 【重点】
            //①获取Map中所有key组成的Set集合 
            Set<String> set =  map.keySet();
            //②遍历Set集合
            for(String key:set){
                String value = map.get(key);
                System.out.println(key +"-->"+value);
            }
        ②值遍历
            //①获取Map中所有值组成的Collection集合
            Collection<String> c = map.values();
            //②遍历集合
            for(String value:c){
                System.out.println(value);
            }
        
        ③键值对遍历
            Map<String, Integer> map = new HashMap<String, Integer>();
            map.put("xucc", 38);
            map.put("liuyahui", 30);
            map.put("fanmingwei", 28);
            map.put("xushy", 18);
            
            //① 获取所有键值对对象(Map.Entry)组成的Set集合 
            Set< Map.Entry<String, Integer> > set = map.entrySet();
            //② 遍历Set集合,得到键值对对象,通过getKey和getValue获取键值对对象包含的键值数据
            for(Map.Entry<String, Integer> e:set){
                String key = e.getKey();
                Integer value = e.getValue();
                System.out.println(key +"-->"+ value);
            }
    实现类:
        HashMap            数组实现        线程不安全轻量级实现效率高 允许null键值对
            自定义类型做key时,为保证内容不重复,必须重写hashCode和equals
            
        LinkedHashMap    数组+链表
            HashMap的子类,自定义类型做key时,要求同HashMap
            可以保证获取顺序和添加顺序一致
            
        TreeMap            红黑树
            可以根据key的内容自动的升序排列
            
        Hashtable        数组实现    线程安全重量级实现效率低    不允许null键值对
            
        Properties    Hashatable的子类
            键和值的类型都是字符串类型,常用于读取配置文件
            

    
 
         
 
         
    
    

    

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值