List接口与ArrayList、LinkedList实现类

List接口中存储的是一组不唯一的,有序的对象

List接口的父接口是Collection接口,所以List接口中大多数方法都是从Collection接口中继承的

List接口有两个实现类:

  1.ArrayList实现类:采用数组的数据结构

    优点:遍历和随机访问元素的效率比较高

    缺点:添加和删除需要移动大量的数据效率低

  2.LinkedList实现类:采用链表的数据结构

    优点:插入和删除元素的效率比较高

    缺点:遍历和随机访问元素的效率比较低

ArrayList实现类特点及api:

特点:

  1.可以存放不同类型的数据,而数组只能存放固定类型的数据

  2.在使用ArrayList子类实现的时候,初始化的长度是10,当长度不够的时候会自动进行扩容(newlength = oldlength * 1.5)

get(int index):

获取集合中指定下标位置的元素

 1 public class ListDemo {
 2     public static void main(String[] args) {
 3         List list = new ArrayList();
 4         list.add("a");
 5         list.add(0);
 6         list.add(true);
 7         System.out.println(list.get(0));
 8     }
 9 }
10 打印结果:a

indexOf(Object o):

按照集合元素下标递增顺序,获取集合中指定元素的下标位置

 1 public class ListDemo {
 2     public static void main(String[] args) {
 3         List list = new ArrayList();
 4         list.add("a");
 5         list.add(0);
 6         list.add(true);
 7         System.out.println(list.indexOf("a"));
 8     }
 9 }
10 打印结果:0

lastIndexOf(Object o):

按照集合元素下标递减顺序,获取集合中指定元素的下标位置

 1 public class ListDemo {
 2     public static void main(String[] args) {
 3         List list = new ArrayList();
 4         list.add("a");
 5         list.add(0);
 6         list.add("a");
 7         list.add(true);
 8         System.out.println(list.lastIndexOf("a"));
 9     }
10 }
11 打印结果:2

set(int index,Object element):

在集合中的指定位置插入元素

 1 public class ListDemo {
 2     public static void main(String[] args) {
 3         List list = new ArrayList();
 4         list.add("a");
 5         list.add(0);
 6         list.add("a");
 7         list.add(true);
 8         list.set(0,"yyy");
 9         System.out.println(list);
10     }
11 }
12 打印结果:[yyy, 0, a, true]

subList(int fromIndex,int toIndex):

截取集合中指定位置之间的元素,放入新的集合中

 1 public class ListDemo {
 2     public static void main(String[] args) {
 3         List list = new ArrayList();
 4         list.add("a");
 5         list.add(0);
 6         list.add("a");
 7         list.add(true);
 8         List list1 = list.subList(0, 2);
 9         System.out.println(list1);
10     }
11 }
12 打印结果:[a, 0]

LinkedList实现类api:

add(int index,Object element):

在指定位置添加元素

链表中添加元素,会断开指定元素的链条,上一元素末尾指针指向新元素开头,新元素末尾指针指向下一元素开头

addFirst(Object e):

在链表第一个元素之前插入元素

addLast(Object e):

在链表最后一个元素之后插入元素

element():

获取链表中第一个元素

offer(Object e):

在链表最后一个元素之后插入元素,该方法与add()方法相同

peek()、peekFirst()、peekLast()、poll()、pollFirst()、pollLast()、get():

这些方法都是获取元素的方法

注意:

ArrayList与LinkedList拥有更加丰富的方法实现,需要用的时候查询api即可,不需要记忆

原文地址:https://www.cnblogs.com/lyc-code/p/12575619.html