1.1 List接⼝介绍
java.util.List 接⼝继承⾃
Collection
接⼝,是单列集合的⼀个重要分⽀,习惯性地会将实现了
List
接⼝的对象称为
List
集合。在
List
集合中允许出现重复的元素,所有的元素是以⼀种线性⽅式进⾏ 存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List
集合还有⼀个特点就是元素有 序,即元素的存⼊顺序和取出顺序⼀致。 看完API
,我们总结⼀下:
List
接⼝特点:
1. 它是⼀个元素存取有序的集合。例如,存元素的顺序是
11
、
22
、
33
。那么集合中,元素的存储就
是按照
11
、
22
、
33
的顺序完成的)。
2.
它是⼀个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是⼀个道
理)。
3. 集合中可以有重复的元素,通过元素的
equals
⽅法,来⽐较是否为重复的元素。
tips:
我们在基础班的时候已经学习过
List
接⼝的⼦类
java.util.ArrayList
类,该类中的⽅法都是来⾃
List
中定义。
1.2 List接⼝中常⽤⽅法
List作为
Collection
集合的⼦接⼝,不但继承了
Collection
接⼝中的全部⽅法,⽽且还增加了⼀些根据元 素索引来操作集合的特有⽅法,如下:
public void add(int index, E element) : /将指定的元素,添加到该集合中的指定位置上。
public E get(int index) : 返回集合中指定位置的元素。
public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
public E set(int index, E element) ⽤指定元素替换集合中指定位置的元素,返回值的更新
前的元素
List集合特有的⽅法都是跟索引相关:
public class ListDemo {
public static void main(String[] args) {
// 创建List集合对象
List<String> list = new ArrayList<String>();
// 往 尾部添加 指定元素
list.add("图图");
list.add("⼩美");
list.add("不⾼兴");
System.out.println(list);
// add(int index,String s) 往指定位置添加
list.add(1,"没头脑");
System.out.println(list);
// String remove(int index) 删除指定位置元素 返回被删除元素
// 删除索引位置为2的元素
System.out.println("删除索引位置为2的元素");
System.out.println(list.remove(2));
System.out.println(list);
// String set(int index,String s)
// 在指定位置 进⾏ 元素替代(改)
// 修改指定位置元素
list.set(0, "三⽑");
System.out.println(list);
// String get(int index) 获取指定位置元素
第三章 List的⼦类
3.1 ArrayList集合
java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于⽇常开发中使⽤
最多的功能为查询数据、遍历数据,所以 ArrayList 是最常⽤的集合。
许多程序员开发时⾮常随意地使⽤ArrayList完成任何需求,并不严谨,这种⽤法是不提倡的。
3.2 LinkedList集合
java.util.LinkedList 集合数据存储的结构是链表结构。⽅便元素添加、删除的集合。
LinkedList是⼀个双向链表,那么双向链表是什么样⼦的呢,我们⽤个图了解下
实际开发中对⼀个集合元素的添加与删除经常涉及到⾸尾操作,⽽LinkedList提供了⼤量⾸尾操作的⽅
法。这些⽅法我们作为了解即可:
public void addFirst(E e) :将指定元素插⼊此列表的开头。
public void addLast(E e) :将指定元素添加到此列表的结尾。
public E getFirst() :返回此列表的第⼀个元素。
public E getLast() :返回此列表的最后⼀个元素。
// 跟size() ⽅法⼀起⽤ 来 遍历的
for(int i = 0;i<list.size();i++){
System.out.println(list.get(i));
}
//还可以使⽤增强for
for (String string : list) {
System.out.println(string);
}
} }