[Java 数据结构] Iterable、Collection、List 的常见方法签名以及含义

[Java 数据结构] Iterable、Collection、List 的常见方法签名以及含义,第1张

[Java 数据结构] Iterable、Collection、List 的常见方法签名以及含义

目录

一、Iterable

二、Collection(集合、容器

1.介绍

2.方法

3.总结

三、List 线性结构

1.介绍

2.方法

3.总结

四、举例


 

Iterable 具备迭代的能力   -able:具备某种能力         Iterate:迭代(遍历)        Iterator:迭代器(用来迭代对象)

一、Iterable

public interface Iterable{

Iterator iterator();                             //抽象类中的抽象方法

default void forEach(Consumeraction){ ... }

default Spliterator spliterator(){ ... } //接口中的默认方法 == 抽象类中的非抽象方法

}

1.是一个泛型接口

2.T:被迭代(遍历)的元素类型

public interface Iterable{  Iterator       iterator();   }  这个对象提供了一个iterator()方法,这个方法返回了一个Iterable 对象:用来被迭代的对象(被称为迭代器)。

使用:

ArrayList list = new ArrayList<>();
list.add("Hello");
list.add("World");

Iterator it = list.iterator();  //使用it 指向的Iterator 对象,进行迭代(遍历)
二、Collection(集合、容器)
1.介绍

线性表是一种Collection,非线性表也是一种Collection。Collection 不具备线性结构的特点,所有Collection 都具备迭代能力 ,Collection 接口 继承自 Iterable 接口

2.方法

1.int size();        返回容器中元素的个数

2.boolean isEmpty();        容器是不是空的  size() == 0

容器是null:口袋都没有;容器是 empty:口袋有,但是口袋中没有东西。

3.boolean contains(Object o);         contains包含:容器中,是否存在 o 元素

隐含着,需要遍历容器中所有的元素,和 o 元素进行相等性比较,意味着,会调用 equals 方法,所以。如果想让 contains 正确的返回,必须正确的重写元素的 equals 方法。

4.boolean add(E e);         把元素 e 放入容器中

由于容器不一定是线性结构,所以放入可能会失败。比如,容器中不允许出现相同的元素,当场时放入重复元素时,就会放入失败。返回 ture :放入成功;返回 false :放入失败。注意:无法明确放入是具体的放入了哪个位置。

5.boolean remove(Object o);        将容器中和 o 相等的其中一个元素删除掉

相等性,意味着equals,只删除一个但不保证是哪一个。

6.boolean addAll(Collection c)        将 c 容器中的所有元素,都放入到当前容器中

元素之间是没有顺序的。

7.void clear();        清空容器中的所有元素

3.总结 方法介绍int size();        返回容器中元素的个数boolean isEmpty();容器是不是空的  size() == 0boolean contains(Object o);容器中,是否存在 o 元素boolean add(E e); 把元素 e 放入容器中boolean remove(Object o); 将容器中和 o 相等的其中一个元素删除掉boolean addAll(Collection c)将 c 容器中的所有元素,都放入到当前容器中void clear();清空容器中的所有元素 三、List 线性结构
1.介绍

线性结构:元素有顺序了,有前后关系,有第一个、第二个、最后一个位置概念出现了,头插、尾插、头删、尾删,可以排序。List 继承自 Collection 所以List 具备迭代能力,具备装元素的能力。

2.方法

1.boolean add(E e);        对应尾插 *** 作

对于线性结构来说,尾插是不可能失败的(内存不够用不在讨论范围之内),返回值永远是 true 。为什么定义成 void 呢?因为Java 的方法重写规则(不能改变方法签名)。

2.void add(int index,E element);        将元素插入到给定位置

从【index,size()】所有元素逻辑上后移一位,index的合法范围【0,size()】。

3.boolean remove(Object o);        删除第一个遇到的和 o 相等的元素

 equals:相等,返回值代表是否删除成功

4.E remove(int index);        将【index】位置的元素从线性结构中取出并返回

让【index + 1,size()】的所有元素,逻辑上前移一个位置,index的合法下标【0,size())。

5.boolean addAll(Collection c);        将c 容器中的所有元素(按照一定的次序),尾插

这个次序目前不确定,永远返回true。

6. void sort(Comparator c);        以c 作为元素的比较器,衡量元素大小进行原地排序

调用完成之后,list 变成“有序的 via Comparator c”

7.E get(int index);        返回index 位置的元素

index的合法范围【0,size())。

8.E set(int index,E element);        用element 替换 index 位置的元素,并返回 index 位置原来的元素

index的合法下标【0,size())。

9.int indexOf(E e);        从前往后,第一个和 e 相等的元素所在位置

10.int lastIndexOf(E e);        从后往前,最后一个和 e 相等的元素所在的位置

11.List subList(int fromIndex,int toIndex);        将原有线性结构的【fromIndex,toIndex)截取成一个新的线性结构并返回

3.总结 方法介绍boolean add(E e); 对应尾插 *** 作void add(int index,E element); 将元素插入到给定位置boolean remove(Object o); 删除第一个遇到的和 o 相等的元素E remove(int index);     将【index】位置的元素从线性结构中取出并返回boolean addAll(Collection c);   将c 容器中的所有元素(按照一定的次序),尾插void sort(Comparator c);     以c 作为元素的比较器,衡量元素大小进行原地排序E get(int index); 返回index 位置的元素E set(int index,E element);用element 替换 index 位置的元素,并返回 index 位置原来的元素int indexOf(E e); 从前往后,第一个和 e 相等的元素所在位置int lastIndexOf(E e);   从后往前,最后一个和 e 相等的元素所在的位置List subList(int fromIndex,int toIndex);将原有线性结构的【fromIndex,toIndex)截取 四、举例

以ArrayList 为例,观察上述方法的使用:

ArrayList list = new ArrayList<>();

List list = new ArrayList<>();

new ArrayList<>()        构造普通顺序表,容量采用默认值

newArrayList<>(int capacity);        以capacity 作为初始容量,构造顺序表

newArrayList<>(Collection c);        以 c 中的所有元素作为当前顺序表中的元素构造顺序表,等价于 newArrayList<>();    list.addALL(c);

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5712517.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存