集合进阶版set 作者:一衡 今日主要学习了set、collections工具类、Map接口几大板块知识。记忆和练习居多。 前面已经学习过了集合的框架中所,知道,集合的两大分支为List 和 Set 二、Set Set属于Collection子接口。 特点:无序(读取有可能和存储顺序不一样),无索引,没有重复的元素。 1、HashSet HashSet<E>();属于Set实现类,也就继承了Collection与Set的功能。其中比较哈希值(每个元素都会调用hashCode()产生一个哈希值)。这也是HashSet没有重复元素的保证。如果存入的是自定义类,需要重写HashCode()、equals()方法。 创建HashSet格式 Set<E> set = new HashSet<E>(); HashSet<E> set = new HashSet<E>(); 如果想要Set保持原顺序排序可以使用LinkedHashSet<>(); 2、遍历方式:转数组、迭代器、增强for 3、 HashCode()方法的优化 如果让hashCode()方法返回一个固定值,那么每个新添加的元素都要调用 equals(Object obj)方法比较,那么效率较低。只需要让不同属性的值的元素产生不同的哈 希值,那么就可以不再调用equals方法比较提高效率。 二、Collections工具类 特点是一个工具类 主要使用场景在有序的集合应用中。 1、主要功能 A、Static int binarySearch(List list,Object key);二分查找,查找制定列表的索引位置。 B、Static void copy(List dest , List src);源列表覆盖到目标列表中. 注:目标列表长度必须大于等于源列表长度。 C、Static void fill(List list,Object o);使用制定对象填充制定列表的所有元素。 D、Static void reverse(List list);反转 E、Static void shuffle(List list);随机置换 F、Static void sort(List list);按照自然顺序排序 G、Static void swap(List list, int i ,int y);将列表中的两个元素互换。 三、Map接口 Map接口,双列集合的顶层接口。 1、格式 Map<K,V> map = new HashMap<K,V>();(又称夫妻集合) K:键,不可重复 V:具体只能有一个值. 2、应用场景 A、映射功能 V put(K key,V value);如果集合中不存在key,返回null将key添加到map集合中 如果存在key则返回原有的value,然后将value替换原先的value. B、删除 V remove(Object key);删除,根据制定key删除关系值返回关系值。 boolean clear();清空 C、判断 boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对 boolean containsValue(Object value):判断Map集合中是否包含值为value键值对 boolean isEmpty():判断Map集合中是否没有任何键值对 D、获取 V get(Object key):根据键获取值 int size():返回Map中键值对的个数 E、遍历 Set<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有 Entry的对象封装到Set集合中返回 Set<K> keySet() :将Map中所有的键装到Set集合中返回 例如:Map<String ,Sring> map = new HashMap<String String >(); Set<String> keys = map.keySet(); for(String key : keys){ String value = map.get(key); System.out.println(key+”\t”+value); } Collection<V> values():返回集合中所有的value的值的集合 例如: Map<String , Sring> map = new HashMap<String , String>(); Set<Map.Entry<String ,String>> entrys = map.entrySet(); for(Entry<String ,String> entry : entrys){ String key = entry.getKey(); String value = entry.getValue(); System.out.println(key+“\t”+value); }
|