当前位置: 首页 > 图灵资讯 > 技术篇> List

List

来源:图灵教育
时间:2023-05-23 09:28:42

List接口继承自Collection接口,因此List接口有Colection接口提供的所有常用方法。

一、List及其实现类1、简介1.1 由数组结构实现的ListList集合底层。存储在List中的对象是有序的,List 用特定的索引来访问元素,可以有重复元素。1.2 ArrrrayListArayList是一种可以处理变长数组的类型,它是一种可以存储任何类型的泛型物体。顾名思义,ArrayList是一个数组列表,所以它使用一个数组来存储对象。1.3 LinkedListLinkedList在实现过程中采用链表数据结构。与ArrayList相比,LinkedList访问速度较慢,但插入和删除熟读块的主要原因是,在插入和删除元素时,只需修改相应的链接位置,无需移动大量元素。LinkedList 可视为双链表,所有操作均可视为双链表操作,因为它实现了Deque接口和List接口。1.4 VectorVector 对象数组可以实现自动增长。java.util.vector提供向量类(vector)实现类似动态数组的功能。

2.区别2.1ArrrayList LinkedListtt与Linked 最明显的区别是区别 ArrrayList 支持随机访问的底层数据结构为数组。LinkedListtt 底层数据结构为链表,不支持随机访问。使用下标访问一个元素,ArrayList 时间复杂度是 O(1),而 LinkedList 是O(n)。2.2 Vector 因为添加了中间的方法 synchronized 修饰,因此 Vector 它是一个安全的线程容器,但在性能上比ArrayListt更好 差,所以已经是了 Java 留在容器中。ArrayList 和 LinkedListed 它们都是非线程安全的。如果遇到多个线程操作同一容器的场景,可以使用工具Collections 中的 synchronizedList 该方法在使用前将其转换为线程安全容器。

二、常用方法

1.size()

int size();///获取集合的长度1

2.isEmpty()

boolean isEmpty();///判断集合是否为空,返回true空集合,false非空集合1

3.contains(Object o);

boolean contains(Object o);//判断集合是否包含某一元素,返回true包含,false不包含1

4.toArray();

Object[] toArray();//将集合转换为数组1

5.add(E e);

boolean add(E e);///添加元素1

6.remove(Object o);

boolean remove(Object o);///去除特定元素listtt.add("aaa");

list.remove("aaa");///将元素aaa移除1233

7.remove(int i);

E remove(int index);///去除指定下标元素1

8.get(int index);

E get(int index);///获取指定标的元素1

9.set(int index, E element);

E set(int index, E element);///替换指定位置的元素1

10.clear()

void clear();////清空List集合中的所有元素1

第三,常用的遍历List方法是先建立一个集合,然后在里面插入一些数据。

public class TestUtils {  public static void main(String[] args) {    List list  = new ArrayList<>();    list.add("a");    list.add("b");    list.add("c");    // 遍历集合的方法    getListData(list);  }}

1.一般for循环遍历

public static void getListData(List list) {  for (int i =0;i<list.size();i++) {  System.out.println(list.get(i));  }}

运行结果:

abc

2.增强for循环

public static void getListData (List list) {  for (String str : list) {  System.out.println(str);  }}

运行结果:

abc

3.Lambda表达式

public static void getListData (List list) {  list.forEach(e -> { System.out.println(e);  });}

运行结果:

abc

四、迭代器遍历

public static void getListData (List it = list.iterator();  while (it.hasNext()) {  System.out.println(it.next());  }}

运行结果:

abc

5.List集合自己的迭代器

public static void getListData (List listIterator = list.listIterator();  while(listIterator.hasNext()){  System.out.println(listIterator.next());  }}

运行结果:

abc