List接口
List接口继承自Collection接口,我们可以使用索引访问List接口中的元素。List接口常用的实现类有ArrayList和LinkedList。(即线性表和链表)下面先来介绍一下ArrayList。
ArrayList
常用方法
方法 | 说明 |
boolean add(Object o) | 在列表的末尾添加元素o |
void add(int index, Object o) | 在指定索引位置index处添加元素o |
int size() | 用于获取该列表中元素的个数 |
Object get(int index) | 获取列表中指定索引位置index处的元素 |
void set(int index, Object o | 将列表中指定索引位置index的元素替换成o |
boolean contains(Object o) | 判断该列表中是否有元素o |
int indexOf(Object obj) | 返回元素的索引位置 |
Object remove(int index) | 删除列表中索引位置index处的元素 |
import java.util.List;
import java.util.ArrayList;
public class ListTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
List l = new ArrayList(); //将接口List的引用指向实现类ArrayList的对象
l.add(4); //往列表中添加4
l.add(3); //往列表中添加3
l.add(2); //往列表中添加2
l.add(1); //往列表中添加1
//列表中元素此时为:4 3 2 1
System.out.println(l.isEmpty()); //判断列表是否为空
System.out.println(l.size()); //输出列表的元素个数
System.out.println(l.contains(5)); //判断列表中是否包含元素5
l.add(0, 1); //在列表的索引0处插入元素1
//列表中元素此时为:1 4 3 2 1
l.set(2, 1); //将列表的索引2处的元素替换成1
//列表中元素此时为:1 4 1 2 1
System.out.println(l.indexOf(1)); //输出指定索引位置的元素
l.remove(1); //删除指定索引位置的元素
//列表中元素此时为:1 1 2 1
for(int i = 0; i < l.size(); i++) //输出该列表
System.out.print(l.get(i)+" ");
l.clear(); //将列表清空
System.out.println("\n"+l.isEmpty());
}
}
LinkedList
常用方法
方法 | 说明 |
void addFirst(Object obj) | 在集合首部插入元素obj |
void addLast(Object obj) | 在集合尾部插入元素obj |
Object getFirst() | 获取集合的第一个元素 |
Object getLast() | 获取集合的最后一个元素 |
Object removeFirst() | 移除当前集合的首元素 |
Object removeLast() | 移除当前集合的尾元素 |
import java.util.List;
import java.util.LinkedList;
public class ListTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList list = new LinkedList();
list.addFirst(1);
list.addFirst(2);
list.addFirst(3);
//此时链表中的元素应该是:3 2 1
list.add(4);
list.add(5);
//3 2 1 4 5
//输出链表中的首元素和尾元素
System.out.print(list.getFirst()+" "+list.getLast()+"\n\n");
//移除首元素
list.removeFirst();
//2 1 4 5
//移除尾元素
list.removeLast();
//2 1 4
//输出当前链表中的元素个数
for(int i = 0; i < list.size(); i++)
System.out.println(list.get(i));
list.clear();
System.out.println(list.isEmpty());
}
}
总结
其实ArrayList的本质就是线性表,而LinkedList的本质则是链表,二者之间各有各的优点及缺点,比如说,在插入、删除等操作频繁的应用场景下使用ArrayList会导致性能低下,但是在查找操作频繁的时候,链表比线性表更加适合