首页 > 编程笔记 > Java笔记 阅读:6

Java List接口的用法(附带实例)

鉴于 Java 数组用来存储数据具有局限性,我们通常使用 java.util.List 替代数组。

List 类型的集合元素有序,且可重复,集合中的每个元素都有对应的顺序索引。

在 List 类型的集合中存储数据,就像面对银行客服,会给每一个来办理业务的客户分配序号:
如下图所示:


图 1 List类型的集合

Java List接口常用的方法

除从 Collection 接口继承的方法外,List 接口还添加了一些根据索引来操作集合元素的方法。

1) 插入元素:
2) 获取元素:
3) 获取元素索引:
4) 删除和替换元素:
【实例】创建集合,实现用 List 接口添加元素、获取元素、获取元素的索引,以及删除和替换元素,代码如下:
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public class ListDemo {
    public static void main(String[] args) {
        ListDemo listDemo = new ListDemo();
        listDemo.testList();
    }

    public void testList() {
        System.out.println("---- 往 List 集合添加元素 ----");
        List list = new ArrayList();
        list.add(1);
        list.add("hello");
        list.add("world");
        System.out.println("添加元素:" + list);

        System.out.println("---- 往 Collection 集合添加元素 ----");
        Collection collection = new ArrayList();
        collection.add("南南");
        System.out.println("collection = " + collection);

        System.out.println("---- 将 Collection 集合元素添加到 List 集合指定的位置 ----");
        // 将集合中元素添加到当前集合的指定位置
        list.addAll(2, collection);
        System.out.println("list = " + list);

        System.out.println("---- 获取元素 ----");
        Object o = list.get(2);
        System.out.println("获取指定位置的元素 = " + o);

        List subList = list.subList(0, 3);
        System.out.println("subList = " + subList);

        System.out.println("---- 获取元素第一次出现的位置 ----");
        int i = list.indexOf("hello");
        System.out.println("第一次出现的位置 = " + i);

        System.out.println("---- 获取元素在最后出现的位置 ----");
        int i1 = list.lastIndexOf("world");
        System.out.println("最后出现的位置 = " + i1);

        System.out.println("---- 删除集合的元素 ----");
        boolean hello = list.remove("hello");
        System.out.println("删除成功? " + hello);
        System.out.println("删除后 list = " + list);

        System.out.println("---- 修改集合的元素 ----");
        list.set(1, "xixi");
        System.out.println("修改后 list = " + list);
    }
}
在上述代码中:
在 Java SE 中,List 的名称类型有两种,一种是 java.util.List 集合接口,另一种是 java.awt.List 图形界面的组件。

在 JDK API 中,List 接口的常用实现类有 ArrayList、LinkedList 和 Vector。

Java ArrayList实现类

ArrayList 是 List 接口的主要实现类。在本质上,ArrayList 是对象引用的一个“变长”数组,如下图所示:


图 2 ArrrayList

ArrayList 实现类的方法与 List 接口的方法基本上完全一致,直接使用 List 接口的方法即可。

Java LinkedList实现类

对频繁插入或删除元素的操作,建议使用 LinkedList 实现类,其效率较高。这是由底层采用链表(双向链表)结构存储数据决定的。

LinkedList 实现类与 ArrayList 实现类不同的是,ArrayList 实现类使用 List 接口的方法,而 LinkedList 实现类既使用 List 接口的方法,又有自己特有的方法。

下面是 LinkedList 实现类特有的方法:
void addFirst(Object obj)
void addLast(Object obj)
Object getFirst()
Object getLast()
Object removeFirst()
Object removeLast()

【实例】创建集合,用 LinkedList 实现类在集合首位和末位添加元素、获取首位元素和末位元素、删除首位元素和末位元素,代码如下:
import java.util.LinkedList;
import java.util.List;

public class ListDemo {
    public static void main(String[] args) {
        ListDemo listDemo = new ListDemo();
        listDemo.testList();
    }

    public void testList() {
        System.out.println("---- 添加元素 ----");
        LinkedList list = new LinkedList<>();
        list.add("a");
        list.addFirst("b");
        list.add("c");
        list.add("d");
        list.addLast("f");
        System.out.println(list);

        System.out.println("---- 获取元素 ----");
        Object first = list.getFirst();
        System.out.println(first);
        Object last = list.getLast();
        System.out.println(last);

        System.out.println("---- 删除元素 ----");
        Object o = list.removeFirst();
        System.out.println(o);
        Object o1 = list.removeLast();
        System.out.println(o1);
    }
}
在上述代码中:

相关文章