Iterable、Collection、List 的常见方法签名以及含义

目录

三者关系

Iterable

Collection 

List 


三者关系

 

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);
    }
}
//接口中的默认方法==抽象类中的非抽象方法

 一个对象提供了一个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);
//用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)截取成一个新的线性结构并返回

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值