Java,集合Collections类Set接口

一.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 赵柳

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值