NO10.JAVA集合

一、集合的概述。
Java集合类时一种特有的工具类,可以用于存储数量不等的多个对象,并可以实现常用的数据结构,如栈、队列等。
Java集合还可用于保存具有映射关系的关联数组。
Java集合分为Set,List,Map,Queue体系。 
    其中Set代表无序、不可重复的集合;
    List代表有序、重复的集合;
	Map则代表具有映射关系的集合。
	Queue体系集合,代表一种队列集合实现。

目的:为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java提供了集合类。
集合类主要负责保存、盛装其他数据,因此集合类也称为容器类。集合只能保存对象的引用变量。

Java集合类主要有两个接口派生而出:Collection 和 Map。
Collection和Map是JAVA集合框架的根接口,这两个接口有包含了一些子接口或者实现类。
Collection:Set和List接口是Collection接口派生出的两个子接口,它们分别代表了有序集合和无序集合;
Queue是java提供的队列实现。

所有的Map实现类用于保存具有映射关系的数据。Map保存的每项数据都是:key-value,也就是有key和value两个值组成。
Map中的key是不可以重复的,key用于标识集合里的每项数据。

访问List集合中的元素,可以直接根据元素的索引来访问。
访问Map集合中的元素,可以根据每项元素的key来访问value;
访问Set集合中的元素,则只能根据元素本身来访问。

二、Collection和Iterator接口
1、Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可以用于操作Set集合,也可以用于操作List和Queue集合。
Collection用法:添加元素、删除元素、返回Collection集合的元素个数以及清空整个集合等。

2、使用Iterator接口遍历集合元素
Collection系列集合、Map系列集合主要用于盛装其他对象。
Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。
Iterator接口隐藏了各种Collection实现类的底层细节,想应用程序提供遍历Collection集合元素的统一编程接口。
boolean hasNext():如果被迭代的集合元素还没有被遍历,则返回true。
Object next():返回集合里的下个元素。
void remove():删除集合里上一次next方法返回的元素。

注意:
1、当使用Iterator迭代访问Collection集合元素时,Collection集合里的元素不能被改变,只有通过Iterator的
remove方法删除上一次next方法返回的集合元素才可以;否则将会引发java.util.ConcurrentModificationException异常。
2、当使用foreach循环迭代访问集合元素时,该集合也不能被改变,否则将引发ConcurrentModirficationException异常。

Iterator迭代器采用的是快速失败机制,一旦在迭代过程中检测到该集合已经被修改(通常是程序中其他线程修改),程序
立即引发ConcurrentModificationException异常,而不是现实修改后的结果,这样可以避免共享资源而引发的潜在问题。

三、Set集合
Set集合不允许包含相同的元素。Set判断两个对象相同不是用==运算符,而是根据equals方法。
add方法添加元素,添加失败返回false,添加成功返回true.

四、HashSet类
HashSet是Set接口的典型实现。HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。
特点:
不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也可能发生改变
HashSet不是同步的,如果多个线程同时访问同一个HashSet,如果有两个或者多个线程同时修改HashSet集合时,必须通过代码来保证其同步。
集合元素值可以为null;

HashSet集合中存入一个元素时,HashSet会调用该对象额hashCode()方法来获得该对象的hashCode值,然后根据该HashCode值决定该对象在HashSet中的存储位置。
HashSet判断两个元素相等的标准:两个对象通过equals()方法比较想的,并且两个对象的hasdCode()方法返回值也相等。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值