目录
一、Iterable
二、Collection(集合、容器)
1.介绍
2.方法
3.总结
三、List 线性结构
1.介绍
2.方法
3.总结
四、举例
Iterable 具备迭代的能力 -able:具备某种能力 Iterate:迭代(遍历) Iterator:迭代器(用来迭代对象)
一、Iterablepublic interface Iterable
Iterator
default void forEach(Consumer super T>action){ ... }
default Spliterator
}
1.是一个泛型接口
2.T:被迭代(遍历)的元素类型
public interface Iterable
使用:
ArrayList二、Collection(集合、容器)list = new ArrayList<>(); list.add("Hello"); list.add("World"); Iterator it = list.iterator(); //使用it 指向的Iterator 对象,进行迭代(遍历)
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.总结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
调用完成之后,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
以ArrayList 为例,观察上述方法的使用:
ArrayList
List
new ArrayList<>() 构造普通顺序表,容量采用默认值
newArrayList<>(int capacity); 以capacity 作为初始容量,构造顺序表
newArrayList<>(Collection c); 以 c 中的所有元素作为当前顺序表中的元素构造顺序表,等价于 newArrayList<>(); list.addALL(c);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)