List 接口及其常用方法

本文介绍了Java中的List接口,它是Collection接口的子接口,特点是元素有序并可重复。文章通过示例展示了List接口常用的方法,如add、get、remove、indexOf等,并提供了使用Iterator、增强for循环和普通for循环遍历List元素的方式。
摘要由CSDN通过智能技术生成

List 接口基本介绍

List接口是Collection接口的子接口,其主要特点如下:

  1. List中元素有序,是按照元素的插入顺序进行排序的。每个元素都有一个与之关联的整数型索引(索引从 0 开始),可以根据索引来访问和操作元素,可以使用普通 for 循环遍历。
  2. List中可以包含重复的元素。
public class ListTest() {
  public static void main(String[] args) {
    // List 中元素有序、且可重复
    List list = new ArrayList();
    list.add("Jack");
    list.add("Rose");
    list.add("May");
    list.add("Luck");
    list.add("Jack");
    System.out.println("list = " + list); // list = [Jack, Rose, May, Luck, Jack]

    // List 支持索引
    System.out.println(list.get(2)); // May
  }
}  

List 接口常用方法

下面的代码以其实现类ArrayList演示List接口的常用方法。

public class ListMethod() {
  public static void main(String[] args) {
    List list = new ArrayList();
    // 添加指定元素到列表末尾
    list.add("任盈盈");
    list.add("赵敏");
    System.out.println("list = " + list); // list = [任盈盈, 赵敏]

    // void add(int index, E element)
    // 在此列表的指定位置插入指定的元素。
    // 将当前位于该位置的元素(如果有)以及后续的元素向右移动(索引加一)。
    list.add(1, "周芷若");
    System.out.println("list = " + list); // list = [任盈盈, 周芷若, 赵敏]

    // boolean addAll(int index, Collection<? extends E> c)
    // 将指定集合中的所有元素按指定位置插入到此列表中。
    // 将当前位于该位置的元素(如果有)以及后续的元素向右移动(索引增加)。
    // 新元素将按照指定集合迭代器返回它们的顺序出现在此列表中。
    List list1 = new ArrayList();
    list1.add("风清扬");
    list1.add("任我行");
    list.addAll(2, list1);
    System.out.println("list = " + list); // list = [任盈盈, 周芷若, 风清扬, 任我行, 赵敏]

    // E get(int index):返回此列表中指定位置的元素。
    System.out.println(list.get(1)); // 周芷若

    list.add("风清扬");
    System.out.println("list = " + list); // list = [任盈盈, 周芷若, 风清扬, 任我行, 赵敏, 风清扬]

    // int indexOf(Object o)
    // 返回此列表中指定元素第一次出现的索引,如果列表不包含该元素,则返回 -1。
    System.out.println(list.indexOf("风清扬")); // 2
    // int lastIndexOf(Object o)
    // 返回此列表中指定元素最后一次出现的索引,如果列表不包含该元素,则返回 -1。
    System.out.println(list.lastIndexOf("风清扬"));// 5

    // E remove(int index):移除此列表中指定位置的元素。
    // 将任何后续的元素向左移动(其索引减一)。返回从列表中移除的元素。
    list.remove(0);
    System.out.println("list = " + list); // list = [周芷若, 风清扬, 任我行, 赵敏, 风清扬]

    // boolean remove(Object o):从列表中移除指定元素的第一个匹配项(如果存在)。
    // 如果列表不包含该元素,则列表保持不变。如果列表发生更改,则返回 true。
    list.remove("风清扬");
    System.out.println("list = " + list); // list = [周芷若, 任我行, 赵敏, 风清扬]

    //E set(int index, E element):用指定元素替换列表中指定位置的元素。
    list.set(1, "张无忌");
    System.out.println("list = " + list); // list = [周芷若, 张无忌, 赵敏, 风清扬]

    // List<E> subList(int fromIndex, int toIndex)
    // 返回此列表中从 fromIndex(包括)到 toIndex(不包括)的子集合。
    // 如果 fromIndex 和 toIndex 相等,则返回的列表为空。
    List list2 = list.subList(1, 3);
    System.out.println("list2 = " + list2); // list2 = [张无忌, 赵敏] 
    // 该方法消除了显式的范围操作的需求(这种操作通常用于数组)。
    // 需要对列表的一部分进行的操作都可以通过传递子列表视图而不是把整个列表作为范围,
    // 类似的习惯用法也可以用于 indexOf 和 lastIndexOf 方法。
    // 例如,以下习惯用法从列表中移除了一系列元素:
    System.out.println("list = " + list); // 输出:list = [周芷若, 张无忌, 赵敏, 风清扬]
    list.subList(1, 3).clear();
    System.out.println("list = " + list);// 输出:list = [周芷若, 风清扬]
  }
}

List 接口遍历元素方式

List接口可以使用 Iterator(迭代器)、增强 for 循环和普通 for 循环三种方式来遍历元素,下面的代码以其实现类Vector演示List接口遍历元素的方式。

public class ThroughElements() {
  public static void main(String[] args) {
    List list = new Vector();

    list.add("蛋挞");
    list.add("芝士蛋糕");
    list.add("提拉米苏");

    System.out.println("---使用 Iterator---");
    Iterator iterator = list.iterator();
    while (iterator.hasNext()) {
      Object o = iterator.next();
      System.out.println(o);
    }

    System.out.println("---使用增强 for 循环---");
    for (Object o : list) {
      System.out.println(o);
    }

    System.out.println("---使用普通 for 循环---");
    for (int i = 0; i < list.size(); i++) {
      System.out.println(list.get(i));
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野生的狒狒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值