一.Collections类
1.Collections常用功能
public static void shuffle(List<?> list):打乱集合顺序。
public static void sort(List list):将集合中元素按照默认规则排序。
public static void sort(List list,Comparator<? super T> com ):将集合中元素按照指定规则排序。public static boolean addAll(Collection c, T... elements) :往集合中添加一些元素
get set 有参无参省约
2 可变参数修饰符 返回值类型 方法名(参数类型... 形参名){ }
二.Set接口
1 Set接口介绍
Set接口:也称Set集合,但凡是实现了Set接口的类都叫做Set集合。特点:元素无索引,元素存取无序,元素不可重复(唯一)。
实现类:HashSet集合:元素无索引,元素存取无序,元素不可重复(唯一)
LinkedHashSet集合:元素无索引,元素存取有序,元素不可重复(唯一)
TreeSet集合:元素无索引,元素存取无序,元素不可重复(唯一),元素可排序
注意:Set集合并没有特有的功能,都是使用Collection父接口中的方法
Set集合元素无索引,所以遍历方式只能是:迭代器,增强for循环
HashSet集合存储数据的结构(哈希表)
哈希表的初始化容量,数组长度为16个。/** *HashSet:集合中的元素无索引,元素不能重复(唯一),元素存取无序
当数组容量不够时,扩容为原数组长度的2倍加载因子为0.75。指示当数组的容量被使用到长度的75%时,进行扩容。简单的来说,哈希表是由数组+链表+红黑树
HashSet保证元素唯一原理
当HashSet集合存储元素的时候,就会调用该元素的hashCode()
方法计算哈希值
判断该哈希值位置上,是否有相同哈希值的元素
如果该哈希值位置上没有相同哈希值的元素,那么就直接存储
如果该哈希值位置上有相同哈希值的元素,那么就产生了哈希冲突
如果产生了哈希冲突,就得调用该元素的equals()方法与该哈希值位置上的所有元素进行一一比较:
如果该哈希值位置上有任意一个元素与该元素相等,那么就不存储如果该哈希值位置上所有元素与该元素都不相等,那么就直接存储补充:Object类: hashCode()和equals()方法;
hashCode():Object类中的hashCode()方法是根据地址值计算哈希值
equals方法():Object类中的equals()方法是比较地址值
3 LinkedHashSet
LinkedHashSet:集合中的元素无索引,元素不能重复(唯一),元素存取有序
4.TreeSet
TreeSet:集合中的元素无索引,元素不能重复(唯一),可以对集合中的元素进行排序public TreeSet():根据其元素的自然排序进行排序
public TreeSet(Comparator comparator): 根据指定的比较器进行排序
三.Map集合
1.概述:P地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。
Collection中的集合称为单列集合,元素是孤立存在的向集合中存储元素采用一个个元素的方式存储.
Map中的集合称为双列集合,元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。
Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值
Map接口中的常用方法:
public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。
public V remove(Object key):把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。public V get(Object key) :根据指定的键,在Map集合中获取对应的值。
public boolean containsKey(Object key):判断该集合中是否有此键
public Collection values() :获取Map集合中所有的值,存储到Collection集合中
public Set keySet(): 获取Map集合中所有的键,存储到Set集合中。
public Set<Map.Entry<K,V>> entrySet():获取到Map集合中所有的键值对对象的集合(Set集合)
3.Map的遍历
方式一:键找值方式
获取Map中所有的键,由于键是唯一的,所以返回一个Set集合
存储所有的键。方法提示:keyset()遍历键的Set集合,得到每一个键。
根据键,获取键所对应的值。方法提示:get(K key)
方式二:键值对方式
获取Map集合中,所有的键值对(Entry)对象
遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象
通过键值对(Entry)对象,获取Entry对象中的键与值
3 HashMap存储自定义类型
4 LinkedHashMap介绍
通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
5 Properties集合
Map接口实现类Hashtable的子类Properties类。Properties也是Map接口实现类,是存储键值对的双列集合,由于此类能和IO流结合使用,数据可以持久化,使用量很大
Properties集合特点:继承Hashtable,底层数据结构是哈希表。
线程安全,运行速度慢。
不允许null值,null键。
此集合存储键值对数据类型固定为String。
可以和IO流结合使用,从流中加载数据。
Properties集合特有方法:Object setPropery(String key,String value),向集合中存储键值对。String getProperty(String key),获取集合中键对应的值,无此键返回null。
Set stringPropertyNames(),集合中的所有键存储到Set集合。
void load(输入流对象)
五,练习
1.List嵌套List
2.List嵌套Map
需求:1班级有第三名同学,学号和姓名分别为:001=张三,002=李四,003=王五,2班有三名同学,学号和姓名分别为:001=黄晓明,002=杨颖,003=刘德华,004=朱丽倩,请将同学的信息以键值对的形式存储到2个Map集合中,在将2个Map集合存储到List集合中。
3.Map嵌套Map
需求:有以下数据结构,使用集合存储。java基础班 集合 存储的是 学号 键,值学生姓名001 张三002 李四java就业班001 王五002 赵柳
标签:Map,存储,Set,Java,元素,Collections,哈希,集合 From: https://blog.csdn.net/2401_86102746/article/details/140750141