IterableCollectionList 的常见方法签名以及含义
Posted Java第一傻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IterableCollectionList 的常见方法签名以及含义相关的知识,希望对你有一定的参考价值。
文章目录
前言
Iterable、Collection、List 都是接口
一、Iterable
Iterable是一个泛型接口 。
T是被迭代元素的类型
public interface Iterable<T>
Iterator<T> iterator();
//抽象类中的抽象方法
default void forEach(Consumer<? super T> action)
Objects.requireNonNull(action);
for (T t : this)
action.accept(t);
default Spliterator<T> spliterator()
return Spliterators.spliteratorUnknownSize(iterator(), 0);
//接口中的默认方法==抽象类中的非抽象方法
可简化为:
public interface Iterable <T>
Iterator<T> iterator();
一个对象提供了一个 iterator() 方法,这个方法返回一个 Iterator 对象:用来迭代的对象(被称为迭代器),就可以说这个对象具备迭代能力。
二、Collection
Collection是不一定具备线性结构的特点。线性表是一种Collection,非线性表也是一种Collection。
线性结构的独有特点有:
1.元素之间有前后关系
2.容器中的元素,可以以下标的形式来体现
3.有头部、尾部、中间的概念
public interface Collection<E> extends Iterable<E>
可以看出Collection 是继承自 Iterable 的泛型接口。
常见方法
int size();
//返回容器中元素的个数
boolean isEmpty();
//判断容器是否为empty
//size==0
boolean contains(Object o);
/*容器中是否存在 o 元素
背后隐含着,需要遍历容器中所有的元素,和 o 元素进行相等性比较
意味着,会调用对象的equals方法
结论:如果要 contains 正确返回,必须正确重写元素的 equals 方法*/
boolean add(E e);
/*把元素 e 放入容器中
由于容器中不一定是线性结构,所以放入可能会失败
eg:容器中不允许出现相同元素,当尝试放入重复的元素时,放入就会失败
注意:放入无法明确放到了哪个位置*/
boolean remove(Object o);
/*将容器中和 o 相等的其中一个元素删除掉
1.相等性,意味着equals
必须正确重写 equals 方法
2.只删除一个
3.不保证哪一个
boolean addAll(Collection c);
//将c容器中所有元素都放到当前容器,放入之后元素之间没有顺序
void clear();
//清空容器内所有元素
三、List
List是线性结构
元素有顺序
可进行头插、尾插、头删、尾删、排序
List具备迭代能力
List具备装元素的能力
public interface List<E> extends Collection<E>
可以看出List是继承自 Collection的泛型接口。
常见方法
boolean add(E e);
//虽然继承自Collection,但是对应尾插操作
//对于线性结构,尾插不可能失败,返回值永远是 true(不定义为void,是因为java的方法重写规则不可以改变方法签名)
void add(int index, E element);
//将元素插入到给定位置(index下标处),[index,size()) (如果存在)所有元素逻辑上后移一位
//index的合法范围[0,size()]
boolean remove(Object o);
//明确删除第一个遇到的和o相等的元素
E remove(int index);
/*将[index]位置的元素从线性结构中取出并返回
[index+1,size()) 所有元素逻辑上前移一位
index的合法范围[0,size()]*/
boolean addAll(Collection c);
//将c容器中的所有元素(按照一定次序,次序目前并不确定),一个个的尾插到this容器中
void sort(Comparator<E> c);
//以c作为元素的比较器(天平),衡量元素大小进行原地排序
E set(int index, E element);
//返回index位置的元素。index的合法范围[0,size()]
E set(int index, E element);
//用element替换index位置的元素,并返回index位置原来的元素
//index的合法范围[0,size()]
int indexOf(E e);
//从前往后,第一个和e相等的元素所在位置
//相等:equals
int lastIndexOf(E e);
//从后往前,最后一个和e相等的元素所在位置
//相等:equals
List<E> subList(int fromIndex, int toIndex);
//将原有线性结构的[fromIndex, toIndex)截取成一个新的线性结构并返回
以上是关于IterableCollectionList 的常见方法签名以及含义的主要内容,如果未能解决你的问题,请参考以下文章