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会导致性能低下,但是在查找操作频繁的时候,链表比线性表更加适合