java 集合

集合

在java类库中,集合类的基本接口是Colloction接口。这个接口中有两个基本方法:

public interface Colloction<E>{
boolead add(E element);\\向集合中添加元素
Iterator<E> interator();\\返回一个实现了Iterator接口的对象,可以使用这个迭代器对象依此访问集合中的元素
}

思考:接口中的add方法有个boolead型的返回值,当添加成功的时候返回true,否则返回true,书中说集中不准许有重复的对象,但我们知道数据类型中是有些可以存放重复数据的,在这里引做思考,后文中会有解答。

迭代器

Iterator接口包括4个方法

public interface Iterator<E>{
E next();\\多次调用可以依次读取集合中的元素。末尾调用会返回NoSuchElementException异常
boolead hasNext();\\返回是否可以调用next()方法
void remove();
default void forEachRemaining(Consumer<? super E> action);
\\最后一个为默认方法,提供一个lambda表达式,将对迭代器的每一个元素调用这个lambda表达式,直到没有元素为止
\\iterator.forEachRamaining(element->do something with element)
}

注:强调一下remove()方法,该方法将会删除上次调用next()方法是返回的元素,这一点在链表一节中会有详细介绍,next()和remove()方法的调用具有相互依赖性。调用remove之前必须调用了next。
不难发现,在以上介绍中,说的都是接口一词,而不是类或者对象,接口并不能通过new一个对象,不过接口变量可以赋值一个实现了这个接口的类的对象,在后文的代码中可以看到。

Colloction<String> c = ...;\\定义一个集合,接口变量赋值实现接口的类的对象,在实际运用中很少见这样的形式
Iterator<String> iter = c.iterator();\\定义一个接口变量,通过集合的iterator()方法得到实现这个接口的类的对象
while(iter.hasNext()){
String element = iter.next();
do something with element
}

以下给出一些常用的方法

API java.util.Collection<E>1.2

Iterator<E> iterator()
返回该集合的迭代器对象
int size()
返回集合存储的元素个数
boolean isEmpty()
集合中是否包含元素
boolean contains(Object obj)
如果集合中包含了一个与obj相等的对象,返回true
boolean containsAll(Collection<?> other)
如果集合包含other集合中的所有元素,返回true
boolean add(Object element)
添加元素
boolean addAll(Collection<? extends E> other)
把集合other添加到这个集合中
boolean remove(Object obj)
从这个集合中删除等于obj的对象
boolean removeAll(Collection<?> other)
从这个集合中删除所有属于other集合的对象
default boolean removeIf(Predicate<? super E> filter)
从这个集合中删除filter返回true的所有元素,这个方法没用过,也不知怎么用
void clear()
清除集合
boolean retainAll(Collection<?> other)
返回这个集合的对象数组
<T> T[] toArray(t[] arrayToFilll)
返回这个集合的对象数组,如果arrayToFill足够大,将集合中的元素填入这个数组中,剩余空间填补null,
否则分配一个新数组,长度和集合大小相同

下图是关于集合的接口继承关系:
在这里插入图片描述
下图是实现接口的具体集合类的继承关系:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值