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 的常见方法签名以及含义的主要内容,如果未能解决你的问题,请参考以下文章

随机过程15 - 离散时间马尔科夫链状态的常返性

随机过程15 - 离散时间马尔科夫链状态的常返性

随机过程15 - 离散时间马尔科夫链状态的常返性

Mysql五连问的常见面试题

WearOS 上的常屏设置

redis集群的常见面试题