数据结构之List

List(线性表)

常用方法:
boolean add(E e)----->尾插e
void add(int index,E element)------>将e插入到index位置
E remove(int index)------->删除index位置的元素
boolean remove(Object o)------->删除遇到的第一个o
E get(int index)------->获取下标inedx位置元素
E set(int index,E element)-------->将下标index位置的元素设置为element
void clear()-------->清空
boolean contains(Object o)--------->判断 o 是否在线性表中
int indexOf(Object o)-------->返回第一个 o 所在下标
int lastIndexOf(Object o)--------->返回最后一个 o 的下标
List subList(int fromIndex, int toIndex)--------->截取部分 list

ArrayList(顺序表)

ArrayList()---------->无参构造
ArrayList(Collection<? extends E> c)----------->利用其他 Collection 构建 ArrayList
ArrayList(int initialCapacity)--------->指定顺序表初始容量
ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入和删除数据慢。

LinkedList(链表)

LinkedList()---------->无参构造
LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项修改指针即可,所以插入和删除数据速度较快。

示例
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
public class ListDemo {
	public static void main(String[] args) {
		List<String> courses = new ArrayList<>();
		courses.add("C 语言");
		courses.add("Java SE");
		courses.add("Java Web");
		courses.add("Java EE");
		// 和数组一样,允许添加重复元素
		courses.add("C 语言");
		// 按照添加顺序打印
		System.out.println(courses);
		// 类似数组下标的方式访问
		System.out.println(courses.get(0));
		System.out.println(courses);
		courses.set(0, "计算机基础");
		System.out.println(courses);
		// 截取部分 [1, 3)
		List<String> subCourses = courses.subList(1, 3);
		System.out.println(subCourses);
		// 重新构造
		List<String> courses2 = new ArrayList<>(courses);
		System.out.println(courses2);
		List<String> courses3 = new LinkedList<>(courses);
		System.out.println(courses3);
		// 引用的转换
		ArrayList<String> courses4 = (ArrayList<String>)courses2;
		System.out.println(courses4);
		// LinkedList<String> c = (LinkedList<String>)course2; 错误的类型
		LinkedList<String> courses5 = (LinkedList<String>)courses3;
		System.out.println(courses5);
		// ArrayList<String> c = (ArrayList<String>)course3; 错误的类型
	}
} 



运行结果:
[C 语言, Java SE, Java Web, Java EE, C 语言]
C 语言
[C 语言, Java SE, Java Web, Java EE, C 语言]
[计算机基础, Java SE, Java Web, Java EE, C 语言]
[Java SE, Java Web]
[计算机基础, Java SE, Java Web, Java EE, C 语言]
[计算机基础, Java SE, Java Web, Java EE, C 语言]
[计算机基础, Java SE, Java Web, Java EE, C 语言]
[计算机基础, Java SE, Java Web, Java EE, C 语言]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值