集合详细解读

Collection

方法
add(Object obj) 添加元素

addAll(Collection coll) 添加另一个集合

int size( ) 有效元素个数

void clear() 清空集合

boolean isEmpty() 是否为空

contains (Object obj) 是否为同一个对象

调用对应元素的equals方法

boolean remove() 移除元素
boolean removeAll(Collection coll) 移除交集
boolean retainAll(Collection coll) 求交集

调用对应元素的equals方法

遍历操作

迭代器

//arraylist为ArrayList集合
	Iterator iterator = arraylist.iterator();
	while(iterator.hasNext) {
		System.out.println(iterator.next());
	}

注意
每次调用iterator 都会返回一个新的 iterator 对象

初始指针处于第一个元素之前,使用 hasNext 判断下一个位置是否有元素。

调用next()方法,使得指针下移,并且返回当前元素。

List接口

List接口下有三个实现类,分别为:

ArrayList 主要实现类 ,线程不安全,效率高,底层为数组

LinkedList 对于频繁插入、删除操作,效率高,底层为双链表

Vector 旧版本,线程安全,效率低,底层为数组

ArrayList

jdk .7
创建ArrayList实例时,便创建长度为10的数组,容量不够,扩容1.5倍

jdk.8
当调用add()方法时,才创建数组。

目的:节省内存,延迟创建

常用方法
void add(int index , Object ele) index指定位置

boolean addAll(int index,Collection eles)

Object get(int index)

int indexOf(Object obj) 返回首次出现位置

remove

set(int index, Object obj)

List subList(int fromIndex , int toIndex) 返回fromIndex 到 toIndex 子集

Set接口

Set接口特点:无序,不可重复

主要有三个实现类:

HashSet 主要实现类,线程不安全,可以存null值

LinkedHashSet

TreeSet

HashSet

无序性,不等于随机性,HashSet存取顺序取决于 hash值

添加元素过程

添加元素,首先调用元素的hashCode() ,得到hash值,再通过某种算法得到底层数组索引值

如果无元素,添加成功。
如果有元素,在调用元素的equals()方法,true 添加不成功。false 添加成功

自定义类
添加的数据为自定义类,自定义类需要重写hashCode() 、equals() 方法

LinkedHashSet:
在HashSet基础上,加上双链表,添加顺序便可知。

TreeSet
底层为红黑树,只能加入同类型数据,可理解为排序接口,有两种排序方法:

自然排序

定制排序

Map

Map 键值对 key-value

key 无序,不可重复 使用Set存储

value 无序,可重复 使用Collection存储

key + value 使用Entry数组存储 实际也为Set

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

憨憨小江

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值