学习: Java 中的 List(方法与遍历方式)

        在 Java 集合框架中,List 是一个非常重要的接口,它继承自 Collection,提供了对有序集合的支持。List 集合允许重复元素,并且可以通过索引访问元素,这使得它在很多场景中非常有用。

一、List 接口简介

        List 接口表示一个有序的集合,集合中的元素可以通过索引访问。与 Set 不同,List 允许重复的元素。List 是一种线性的数据结构,适合在需要保持元素顺序的场景下使用。List 接口常见的实现类有 ArrayList、LinkedList 和 Vector。

二、List 接口的独有方法

List 接口在继承 Collection 接口的基础上,增加了许多独有的方法,用于操作集合中的元素。这些方法包括:

- void add(int index, E element)    :在指定位置插入元素,原位置及其后的元素向后移动。

- E remove(int index)                    :删除指定索引位置的元素,并返回被删除的元素。

- E set(int index, E element)         :用新元素替换指定索引位置的元素,返回旧元素。

- E get(int index)                           :返回指定索引位置的元素。

示例代码

import java.util.ArrayList;
import java.util.List;

public class ListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        // 在索引1位置插入元素
        list.add(1, "QQQ");
        System.out.println(list); // 输出: [aaa, QQQ, bbb, ccc]

        // 删除索引0位置的元素
        //调用方法的时候,如果方法出现了重载现象
        //优先调用,实参跟形参类型一致的那个方法。
        String removedElement = list.remove(0);
        System.out.println(removedElement); // 输出: aaa
        System.out.println(list); // 输出: [QQQ, bbb, ccc]

        // 修改索引1位置的元素
        String oldElement = list.set(1, "DDD");
        System.out.println(oldElement); // 输出: bbb
        System.out.println(list); // 输出: [QQQ, DDD, ccc]

        // 获取索引1位置的元素
        String element = list.get(1);
        System.out.println(element); // 输出: DDD
    }
}

三、List 接口的五种遍历方式

        遍历 List 是一个非常常见的操作,根据具体需求和场景,有多种方式可以选择。以下是五种常见的遍历方法:

1. 使用 Iterator 遍历

        Iterator 是一种通用的遍历集合的方式。它提供了 hasNext() 和 next() 方法,用于检查是否有下一个元素和获取下一个元素。Iterator 还提供了 remove() 方法,可以安全地在遍历过程中删除元素。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String element = it.next();
            System.out.println(element);
        }
    }
}

2. 使用 ListIterator 遍历

        ListIterator 是 Iterator 的增强版本,它不仅可以向前遍历,还可以向后遍历,并且可以在遍历过程中修改列表。ListIterator 提供了 hasPrevious() 和 previous() 方法。

- hasPrevious():如果以逆向遍历列表,列表迭代器前面还有元素,则返回 true,否则返回false

- previous():返回列表中ListIterator指向位置前面的元素

- 获取一个列表迭代器的对象,里面的指针默认也是指向0索引的

- 额外添加了一个 add() 方法:在遍历的过程中,可以添加元素

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class ListIteratorDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        ListIterator<String> it = list.listIterator();
        while (it.hasNext()) {
            String element = it.next();
            System.out.println(element);
            if("bbb".equals(str)){
                //添加元素
                it.add("qqq");
            }
        }

        // 逆向遍历
        while (it.hasPrevious()) {
            String element = it.previous();
            System.out.println(element);
        }
    }
}

3. 使用增强 for 循环

        增强 for 循环是一种简洁的遍历集合的方式,不需要显式地使用索引或迭代器。它适用于只读操作,不支持在遍历过程中修改集合。

- 下面的变量element,其实就是一个第三方的变量而已。

- 在循环的过程中,依次表示集合中的每一个元素

import java.util.ArrayList;
import java.util.List;

public class ForEachDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        
        for (String element : list) {
            System.out.println(element);
        }
    }
}

4. 使用 Lambda 表达式遍历

Java 8 引入了 forEach 方法和 Lambda 表达式,使得遍历集合更加简洁和直观。forEach 方法接收一个 Consumer 接口的实现,可以使用 Lambda 表达式来处理每个元素。

- forEach方法的底层其实就是一个循环遍历,依次得到集合中的每一个元素

- 并把每一个元素传递给下面的accept方法

- accept方法的形参element,依次表示集合中的每一个元素

import java.util.ArrayList;
import java.util.List;

public class LambdaDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        list.forEach(element -> System.out.println(element));
    }
}

5. 使用普通 for 循环遍历

        传统的 for 循环可以通过索引访问 List 中的每个元素。这种方式适合需要对索引进行操作或访问特定范围元素的场景。

import java.util.ArrayList;
import java.util.List;

public class ForLoopDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        for (int i = 0; i < list.size(); i++) {
            String element = list.get(i);
            System.out.println(element);
        }
    }
}

四、总结

        List 接口是 Java 集合框架中至关重要的一部分,为开发者提供了处理有序集合的强大功能。通过各种方法和遍历方式,List 可以高效地操作和管理数据。本文详细介绍了 List 的四个独有方法和五种遍历方式,希望能够帮助开发者更好地理解和使用 List。掌握这些技巧后,开发者可以在实际项目中更加灵活地处理和操作数据集合。

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值