Set和Map概论

Set

  • 底层调用的是对应的map
  • add(E e)、remove(Object o)、contains(Object o)
  • TreeSet是排序的集合,而不是有序集合,Set集合没有下标。

map(key和value都是引用类型)

  1. Map接口常用方法

    public interface Map<K,V> {//是最顶层的一个借口
    	int size();
    	boolean isEmpty();
        void clear();
    	boolean containsKey(Object key);//是否包含某个key
    	boolean containsValue(Object value);//是否包含某个value
    	V get(Object key);//通过键获取值
    	V put(K key, V value);//添加键值对
    	V remove(Object key);//移除对应的键值对
    	Set<K> keySet();//获取map集合的所有key
    	Collection<V> values();//获取map集合的所有value
    	Set<Map.Entry<K, V>> entrySet();//将map集合转换成set集合,转换成Map.Entry<K,V>类型
        int hashCode();
        boolean equals(Object o);
        
        default V getOrDefault(Object key, V defaultValue) {
            V v;
            return (((v = get(key)) != null) || containsKey(key))
                ? v
                : defaultValue;
        }  
    }
    
    
    interface Entry<K,V> { //Map的内部接口
    	K getKey();
    	V getValue();
    	V setValue(V value);
    }
    

HashMap的遍历

  • 第二种方式用entrySet效率更高
  1. //1.获取所有的Key,通过key来遍历
            Set<Integer> keys = map.keySet();
            //迭代器遍历
            Iterator<Integer> it = keys.iterator();
            while (it.hasNext()) {
                int key = it.next();
                String value = map.get(key);
                System.out.println(key + "=" + value);
            }
            //foreach遍历
            for (Integer key: keys) {
                System.out.println(key + " = " + map.get(key));
            }
    
  2. //2.用entrySet方法遍历
            Set<Map.Entry<Integer, String>> set = map.entrySet();
            //迭代器遍历
            Iterator<Map.Entry<Integer, String>> its = set.iterator();
            while (its.hasNext()) {
                Map.Entry<Integer, String> node = its.next();
                Integer key = node.getKey();
                String value = node.getValue();
                System.out.println(key + " = " + value);
            }
            //foreach
            for (Map.Entry<Integer, String> node: set) {
                System.out.println(node.getKey() + "--->" + node.getValue());
            }
    
posted @ 2020-11-08 16:56  星银  阅读(29)  评论(0)    收藏  举报