Java——List

一、概述

List集合是Collection集合子类型,继承了Collection中所有的功能,比Collection约束更加详细、严谨。

二、特点

  1. 元素具备索引【有索引】
  2. 元素可以重复存储(两个对象如果equals方法调用后返回true)【可重复】
  3. 元素的存取是有序的【有序】

三、常用子类

  1. ArrayList:底层结构就是数组【查询快、增删慢】
  2. Vector:底层结构也是数组(线程安全、同步安全、低效、用的少)
  3. LinkedList:底层是链表结构(双向链表)【查询慢、增删快】

四、常用方法

List继承了Collection中所有方法,元素具备索引特性,因此新增了一些含有索引的特有方法。

4.1、add

public void add(int index, E element)

将指定的元素,添加到该集合中的指定位置上。如果指定位置上已存在元素,则会把已存在元素向后移动一位。

例子

List<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
System.out.println(list);   // [hello, world]
list.add(1, "hi");   // [hello, hi, world]

4.2、get

public E get(int index)

返回集合中指定位置的元素

例子

List<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
System.out.println(list.get(0));   // hello

4.3、remove

public E remove(int index)

移除列表中指定位置的元素,返回的是被移除的元素

例子

List<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
System.out.println(list);   // [hello, world]
list.remove(0);
System.out.println(list);   // [world]

4.4、set

public E set(int index, E element)

用指定元素替换集合中指定位置的元素,返回值是更新前的元素。

例子

List<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
String str = list.set(0, "hi");
System.out.println(str);   // hello
System.out.println(list);   // [hi, world]

4.5、size

返回集合的大小

例子

List<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
System.out.println(list.size());   // 2

4.6、isEmpty

检查集合是否为空,空返回true、非空返回false

例子

List<String> list = new LinkedList<>();
System.out.println(list.isEmpty());   // true
list.add("hello");
list.add("world");
System.out.println(list.isEmpty());   // false

4.7、contains

检查集合是否包含指定元素,包含返回true、不包含返回false

例子

List<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
System.out.println(list.contains("hello"));   // true
System.out.println(list.contains("hi"));   // false

五、LinkedList

5.1、介绍

LinkedList底层结构是双向链表。每个节点有三个部分的数据,一个是保存元素数据,一个是保存前一个节点的地址,一个是保存后一个节点的地址。可以双向查询,效率会比单向链表高。如下是LinkedList的一些特有方法。

5.2、addFirst、addLast

// 将指定元素插入到此列表的开头
public void addFirst(E e)

// 将指定元素添加到此列表的结尾
public void addLast(E e)

例子

LinkedList<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
System.out.println(list);   // [hello, world]
list.addFirst("hi");
list.addLast("nice");
System.out.println(list);   // [hi, hello, world, nice]

5.3、getFirst、getLast

// 返回此列表的第一个元素
public E getFirst()

// 返回此列表的最后一个元素
public E getLast()

例子

LinkedList<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
list.add("hi");
list.add("nice");
System.out.println(list);   // [hello, world, hi, nice]
System.out.println(list.getFirst());   // hello
System.out.println(list.getLast());   // nice

5.4、removeFirst、removeLast

// 移除并返回此列表的第一个元素
public E removeFirst()

// 移除并返回此列表的最后一个元素
public E removeLast()

例子

LinkedList<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
list.add("hi");
list.add("nice");
System.out.println(list);   // [hello, world, hi, nice]
String firstE = list.removeFirst();
String lastE = list.removeLast();
System.out.println(list);   // [hello, world, hi, nice]
System.out.println(firstE);   // hello
System.out.println(lastE);   // nice

5.5、pop

从此列表所表示的堆栈弹出一个元素(底层实现就是removeFirst)

public E pop()

例子

LinkedList<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
list.add("hi");
System.out.println(list);   // [hello, world, hi]
String str = list.pop();
System.out.println(str);   // hello
System.out.println(list);   // [world, hi]

5.5、push

将元素推入此列表所表示的堆栈(底层就是addFirst)

public void push(E e)

例子

LinkedList<String> list = new LinkedList<>();
list.add("hello");
list.add("world");
System.out.println(list);   // [hello, world]
list.push("hi");
System.out.println(list);   // [hi, hello, world]

  

原文地址:https://www.cnblogs.com/xulinjun/p/14775878.html