Java集合List的方法及遍历方式举例

 更新时间:2025年05月15日 09:16:38   作者:举一个梨子zz  
这篇文章主要介绍了Java集合List的方法及遍历方式的相关资料,List 是Java集合框架中的一种接口,继承自Collection接口,文中通过代码介绍的非常详细,需要的朋友可以参考下

List集合的特点

有序:存和取的元素顺序一致
有索引:可以通过索引操作元素
可重复:存储的元素可以重复

List集合的方法

Collection的方法List都继承了,可以使用Collection中的方法
此外,List集合因为有索引,所以多了很多索引操作的方法。

方法名称说明
void add (int index,E element)在此集合中的指定位置插入指定的元素
E remove (int index)删除指定索引处的元素,返回被删除的元素
E set (int index,E element)修改指定索引处的元素,返回被修改的元素
E get (int index)返回指定索引处的元素

注意:

List集合中的上述方法存在重载现象,一个是继承Collection的需要提供的参数是给定的具体对象,另一个是List自己的需要提供的参数是索引,所以出现以下问题。

例如:remove(1),到底是删除泛型是<Integer>集合中的元素1,还是删除1索引上的元素

答:优先调用形参和实参类型一致的方法 

代码演示:

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

public class Test5 {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        System.out.println(list);//[1, 2, 3]

        //1是int类型,所以调用形参是int类型的删除指定索引处的元素
        list.remove(1);
        System.out.println(list);//[1, 3]

        //将1变为Integer类型
        Integer i = Integer.valueOf(1);
        //i变量中的1是引用数据类型,所以调用形参是Object类型的删除指定元素
        list.remove(i);
        System.out.println(list);//[3]

    }
}

List集合的遍历方式

除了与Collection相同的迭代器遍历,增强for遍历,lambda遍历外,还有普通for遍历,列表迭代器遍历。

普通for遍历

代码演示

public class Test6 {
    public static void main(String[] args) {
        //普通for遍历
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        for (int i = 0; i < list.size(); i++) {
            String str = list.get(i);
            System.out.println(str);
        }
        //aaa
        //bbb
        //ccc
    }
}

列表迭代器遍历

说明

列表迭代器ListIterator继承自迭代器Iterator,

获取列表迭代器

方法名称说明
ListIterator<E> listIterator ()

返回迭代器对象默认指向当前集合的0索引

常用方法 

方法名说明
boolean hasNext ()

正向遍历列表

判断当前位置是否有元素,

有元素返回true,没有元素返回false

E next ()获取当前位置的元素
并将迭代器对象移向下一个位置。
boolean hasPrevious ()

逆向遍历列表

判断当前位置是否有元素,

有元素返回true,没有元素返回false(了解)

E previous ()获取当前位置的元素
并将迭代器对象移向上一个位置。(了解)
vold add (E e)将指定的元素插入列表
void remove ()删除获取到的元素

代码演示

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

public class Test6 {
    public static void main(String[] args) {

        List&lt;String&gt; list = new ArrayList&lt;&gt;();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        //遍历打印
        ListIterator&lt;String&gt; lit1 = list.listIterator();
        while (lit1.hasNext()) {
            String str = lit1.next();
            System.out.println(str);
        }
        //aaa
        //bbb
        //ccc

        //遍历添加:在aaa的后面添加ddd
        ListIterator&lt;String&gt; lit2 = list.listIterator();
        while (lit2.hasNext()) {
            String s = lit2.next();
            if (s.equals("aaa")) {
                lit2.add("ddd");
            }
        }
        System.out.println(list);//[aaa, ddd, bbb, ccc]

    }
}

ArrayList集合底层原理

 底层数据结构是数组,查询快,增删慢

1.利用空参创建的集合,在底层创建一个默认长度为0的数组
2.添加第一个元素时,底层会创建一个新的长度为10的数组
3.存满时,会扩容1.5倍
4.如果一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准

LinkedList集合底层原理

底层数据结构是双向链表,查询慢,增删快,但是如果操作的是首尾元素,速度也是极快的
因此LinkedList本身多了很多直接操作首尾元素的特有API,所以除了继承自Collection和List中的方法,还有以下方法

特有方法说明
public void addFirst(E e)在该列表开头插入指定的元素
public void addLast(E e)将指定的元素追加到此列表的末尾
public E getFirst()返回此列表中的第一个元素
public E getLast()返回此列表中的最后一个元素
public E removeFirst()从此列表中删除并返回第一个元素
public E removeLast()从此列表中删除并返回最后一个元素

总结 

到此这篇关于Java集合List的方法及遍历方式的文章就介绍到这了,更多相关Java集合List内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于SpringMVC的异常处理机制详细解读

    关于SpringMVC的异常处理机制详细解读

    这篇文章主要介绍了关于SpringMVC的异常处理机制详细解读,SpringMVC是目前主流的Web MVC框架之一,本文将分析SpringMVC的异常处理内容,需要的朋友可以参考下
    2023-05-05
  • java 后台将base64字符串保存为图片的方法

    java 后台将base64字符串保存为图片的方法

    本篇文章主要介绍了java 后台将base64字符串保存为图片的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • springcloud feign服务之间调用,date类型转换错误的问题

    springcloud feign服务之间调用,date类型转换错误的问题

    这篇文章主要介绍了springcloud feign服务之间调用,date类型转换错误的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • JAVA如何获取30天或某段范围日期

    JAVA如何获取30天或某段范围日期

    JAVA获取30天或某段范围日期的方法,在项目使用中比较频繁,通过示例代码介绍了Java获取当前时间的上一年、下一年、上个月、下个月、前一天,当天,本周,上周,本季度,上季度等(时间格式化),感兴趣的朋友一起看看吧
    2023-10-10
  • Spring如何使用通知 Advice 管理事务

    Spring如何使用通知 Advice 管理事务

    Spring 默认采用声明式事务管理(通过配置的方式) ,也可以实现编程式事务管理,这篇文章主要介绍了Spring使用通知Advice管理事务,需要的朋友可以参考下
    2023-06-06
  • 使用Java构造和解析Json数据的两种方法(详解一)

    使用Java构造和解析Json数据的两种方法(详解一)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。接下来通过本文给大家介绍使用Java构造和解析Json数据的两种方法,需要的朋友参考下吧
    2016-03-03
  • Java异常处理机制深入理解

    Java异常处理机制深入理解

    如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器
    2022-01-01
  • Spring 注入集合实现过程示例详解

    Spring 注入集合实现过程示例详解

    这篇文章主要为大家介绍了Spring 注入集合实现过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • JAVA代码调用ffmpeg程序进行视频转码和推流方式

    JAVA代码调用ffmpeg程序进行视频转码和推流方式

    本文介绍了如何通过Java代码调用FFmpeg进行多媒体视频处理,包括两种方式:使用第三方封装的jar包和使用ProcessBuilder类创建进程,两种方式各有优缺点,选择时需根据具体需求和场景
    2025-02-02
  • Java判断两个浮点数相等

    Java判断两个浮点数相等

    本文主要介绍了Java判断两个浮点数相等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05

最新评论