Hutool Hutool
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
🎢最佳实践
💖支持
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(hutool-core)

    • AI(Hutool-ai)

    • 注解(annotation)

    • 数组(array)

    • JavaBean(bean)

    • 缓存(cache)

    • 类加载器(classloader)

    • 编码解码(codec)

    • 集合(collection)

      • 简介
      • 集合工具-CollUtil
      • 集合流工具-CollStreamUtil
      • 列表工具-ListUtil
        • 📚 介绍
          • 设计理念
        • 🔧 核心方法详解
          • 1. 列表创建
          • of(T... values)
          • split(String str, String separator)
          • zip(List values)
          • 2. 列表转换
          • toList(Collection collection)
          • toList(Iterator iterator)
          • 3. 列表操作
          • reverse(List list)
          • sub(List list, int fromIndex, int toIndex)
          • removeNull(List list)
          • 4. 列表排序
          • sort(List list)
          • sort(List comparator)
          • 5. 列表查找
          • indexOf(List list, T element)
          • lastIndexOf(List list, T element)
          • 6. 列表比较
          • equals(List list2)
        • 🚀 综合示例
          • 示例1:列表操作综合应用
          • 示例2:列表转换应用
        • 🎯 设计优势
        • 📌 注意事项
        • 🚀 总结
      • 环形索引工具-RingIndexUtil
      • 分割迭代器工具-SpliteratorUtil
      • 迭代器工具-IterUtil
      • 集合工具-SetUtil
    • 比较器(comparator)

    • 压缩(compress)

    • 类型转换(convert)

    • 数据(data)

    • 日期时间(date)

    • 异常(exception)

    • 函数(func)

    • IO流(io)

    • 语言特性(lang)

    • Map(map)

    • 数字数学(math)

    • 网络(net)

    • 对象池(pool)

    • 反射(reflect)

    • 正则(regex)

    • 服务提供(spi)

    • 聚合操作(stream)

    • 字符串文本(text)

    • 并发和线程(thread)

    • 树结构(tree)

    • 工具集合(util)

    • XML操作(xml)

  • 定时任务(hutool-cron)

  • 加密(hutool-crypto)

  • 数据库(hutool-db)

  • 扩展(hutool-extra)

  • HTTP(hutool-http)

  • 日志(hutool-log)

  • 配置文件(hutool-setting)

  • JSON(hutool-json)

  • Office办公(hutool-poi)

  • 套接字(hutool-socket)

  • GUI(hutool-swing)

  • 指南
  • 核心(hutool-core)
  • 集合(collection)
Hutool
2026-01-14
目录

列表工具-ListUtil

# 📚 介绍

ListUtil 是 Hutool 核心模块中的列表专用操作工具类,它提供了丰富的列表操作方法,包括列表创建、转换、操作、排序、查找和比较等功能,为 Java 开发者提供了便捷的列表操作解决方案。

# 设计理念

  • 简化创建:提供多种方式创建列表
  • 丰富操作:涵盖列表的各种常用操作
  • 高效性能:底层实现经过优化,性能优异
  • 易用性强:提供简洁的 API,一行代码即可完成复杂的列表操作
  • 线程安全:所有工具类都是线程安全的,可以在多线程环境下安全使用

# 🔧 核心方法详解

# 1. 列表创建

# of(T... values)

功能:创建一个包含指定元素的列表

参数:

  • values:要包含在列表中的元素

返回值:包含指定元素的列表

示例:

// 创建包含指定元素的列表
List<String> list = ListUtil.of("a", "b", "c");
Console.log(list); // [a, b, c]

// 创建包含单个元素的列表
List<Integer> singleList = ListUtil.of(1);
Console.log(singleList); // [1]

// 创建空列表
List<String> emptyList = ListUtil.of();
Console.log(emptyList); // []

# split(String str, String separator)

功能:将字符串按指定分隔符分割为列表

参数:

  • str:要分割的字符串
  • separator:分隔符

返回值:分割后的列表

示例:

// 分割字符串为列表
List<String> list = ListUtil.split("a,b,c", ",");
Console.log(list); // [a, b, c]

# zip(List<? extends K> keys, List<? extends V> values)

功能:将两个列表压缩为一个 Map

参数:

  • keys:键列表
  • values:值列表

返回值:压缩后的 Map

示例:

List<String> keys = ListUtil.of("name", "age");
List<Object> values = ListUtil.of("Hutool", 7);

// 压缩为Map
Map<String, Object> map = ListUtil.zip(keys, values);
Console.log(map); // {name=Hutool, age=7}

# 2. 列表转换

# toList(Collection<? extends T> collection)

功能:将集合转换为列表

参数:

  • collection:要转换的集合

返回值:转换后的列表

示例:

Set<String> set = new HashSet<>(Arrays.asList("a", "b", "c"));
// 转换为列表
List<String> list = ListUtil.toList(set);
Console.log(list); // [a, b, c]

# toList(Iterator<? extends T> iterator)

功能:将迭代器转换为列表

参数:

  • iterator:要转换的迭代器

返回值:转换后的列表

示例:

Iterator<String> iterator = Arrays.asList("a", "b", "c").iterator();
// 转换为列表
List<String> list = ListUtil.toList(iterator);
Console.log(list); // [a, b, c]

# 3. 列表操作

# reverse(List list)

功能:反转列表中的元素顺序

参数:

  • list:要反转的列表

返回值:反转后的列表

示例:

List<String> list = ListUtil.of("a", "b", "c");
// 反转列表
List<String> reversedList = ListUtil.reverse(list);
Console.log(reversedList); // [c, b, a]

# sub(List list, int fromIndex, int toIndex)

功能:截取列表的指定部分

参数:

  • list:要截取的列表
  • fromIndex:起始索引(包含)
  • toIndex:结束索引(不包含)

返回值:截取后的列表

示例:

List<String> list = ListUtil.of("a", "b", "c", "d", "e");
// 截取列表
List<String> subList = ListUtil.sub(list, 1, 4);
Console.log(subList); // [b, c, d]

# removeNull(List list)

功能:移除列表中的 null 元素

参数:

  • list:要处理的列表

返回值:移除 null 后的列表

示例:

List<String> list = ListUtil.of("a", null, "b", null, "c");
// 移除null元素
List<String> nonNullList = ListUtil.removeNull(list);
Console.log(nonNullList); // [a, b, c]

# 4. 列表排序

# sort(List list)

功能:对列表进行自然排序

参数:

  • list:要排序的列表

返回值:排序后的列表

示例:

List<Integer> list = ListUtil.of(3, 1, 2);
// 自然排序
List<Integer> sortedList = ListUtil.sort(list);
Console.log(sortedList); // [1, 2, 3]

# sort(List list, Comparator<? super T> comparator)

功能:使用指定的比较器对列表进行排序

参数:

  • list:要排序的列表
  • comparator:比较器

返回值:排序后的列表

示例:

List<String> list = ListUtil.of("c", "a", "b");
// 使用比较器排序
List<String> sortedList = ListUtil.sort(list, Comparator.reverseOrder());
Console.log(sortedList); // [c, b, a]

# 5. 列表查找

# indexOf(List list, T element)

功能:查找元素在列表中的索引

参数:

  • list:要查找的列表
  • element:要查找的元素

返回值:元素在列表中的索引,如果不存在则返回 -1

示例:

List<String> list = ListUtil.of("a", "b", "c");
// 查找元素索引
int index = ListUtil.indexOf(list, "b");
Console.log(index); // 1

# lastIndexOf(List list, T element)

功能:查找元素在列表中最后一次出现的索引

参数:

  • list:要查找的列表
  • element:要查找的元素

返回值:元素在列表中最后一次出现的索引,如果不存在则返回 -1

示例:

List<String> list = ListUtil.of("a", "b", "c", "b");
// 查找元素最后一次出现的索引
int lastIndex = ListUtil.lastIndexOf(list, "b");
Console.log(lastIndex); // 3

# 6. 列表比较

# equals(List<?> list1, List<?> list2)

功能:比较两个列表是否相等

参数:

  • list1:第一个列表
  • list2:第二个列表

返回值:如果两个列表相等则返回 true,否则返回 false

示例:

List<String> list1 = ListUtil.of("a", "b", "c");
List<String> list2 = ListUtil.of("a", "b", "c");
List<String> list3 = ListUtil.of("a", "c", "b");

// 比较列表
boolean equals1 = ListUtil.equals(list1, list2);
boolean equals2 = ListUtil.equals(list1, list3);

Console.log(equals1); // true
Console.log(equals2); // false

# 🚀 综合示例

# 示例1:列表操作综合应用

public void listUtilTest() {
    // 创建列表
    List<String> list = ListUtil.of("a", "b", "c", "d", "e");
    Console.log("原始列表:" + list); // 原始列表:[a, b, c, d, e]

    // 反转列表
    List<String> reversedList = ListUtil.reverse(list);
    Console.log("反转后:" + reversedList); // 反转后:[e, d, c, b, a]

    // 截取列表
    List<String> subList = ListUtil.sub(list, 1, 4);
    Console.log("截取后:" + subList); // 截取后:[b, c, d]

    // 排序列表
    List<String> sortedList = ListUtil.sort(list, Comparator.reverseOrder());
    Console.log("排序后:" + sortedList); // 排序后:[e, d, c, b, a]

    // 查找元素
    int index = ListUtil.indexOf(list, "c");
    Console.log("元素c的索引:" + index); // 元素c的索引:2

    // 移除null元素
    List<String> listWithNull = ListUtil.of("a", null, "b", null, "c");
    List<String> nonNullList = ListUtil.removeNull(listWithNull);
    Console.log("移除null后:" + nonNullList); // 移除null后:[a, b, c]
}

# 示例2:列表转换应用

public void listConvertTest() {
    // 字符串分割为列表
    List<String> splitList = ListUtil.split("1,2,3,4,5", ",");
    Console.log("字符串分割:" + splitList); // 字符串分割:[1, 2, 3, 4, 5]

    // 转换为整数列表
    List<Integer> intList = splitList.stream()
        .map(Integer::parseInt)
        .collect(Collectors.toList());
    Console.log("转换为整数列表:" + intList); // 转换为整数列表:[1, 2, 3, 4, 5]

    // 两个列表压缩为Map
    List<String> keys = ListUtil.of("name", "version", "author");
    List<Object> values = ListUtil.of("Hutool", "v7", "Loolly");
    Map<String, Object> map = ListUtil.zip(keys, values);
    Console.log("列表压缩为Map:" + map); // 列表压缩为Map:{name=Hutool, version=v7, author=Loolly}
}

# 🎯 设计优势

  1. 简化创建:提供了多种便捷的列表创建方式,包括直接创建、字符串分割、列表压缩等
  2. 丰富操作:涵盖了列表的各种常用操作,包括转换、反转、截取、排序、查找等
  3. 高效性能:底层实现经过优化,性能优异,特别是对于大规模列表
  4. 易用性强:提供了简洁的 API,一行代码即可完成复杂的列表操作
  5. 线程安全:所有方法都是线程安全的,可以在多线程环境下安全使用
  6. 兼容性好:兼容 Java 各种版本,支持各种列表实现

# 📌 注意事项

  1. 空值处理:大部分方法都进行了空值处理,但在使用时仍需注意
  2. 列表类型:返回的列表类型可能因方法而异,使用时注意类型转换
  3. 性能考虑:对于大规模列表,某些操作可能会影响性能,建议根据实际情况选择合适的方法
  4. 线程安全:工具类本身是线程安全的,但列表对象的线程安全性取决于具体的列表实现

# 🚀 总结

ListUtil 是一个功能强大、使用便捷的列表操作工具类,为 Java 开发者提供了丰富的列表操作解决方案。它简化了列表的创建、转换、操作、排序、查找和比较等操作,提高了开发效率。

无论是简单的列表创建,还是复杂的列表操作,ListUtil 都能轻松应对。通过合理使用 ListUtil,可以简化列表操作的开发工作,提高开发效率,同时保证操作的准确性和性能。

ListUtil 是 Hutool 集合模块中的重要组成部分,与其他集合工具类一起,构成了完整的集合操作解决方案,为 Java 开发者提供了丰富的集合操作工具。

集合流工具-CollStreamUtil
环形索引工具-RingIndexUtil

← 集合流工具-CollStreamUtil 环形索引工具-RingIndexUtil→

Theme by Vdoing | Copyright © 2025-2026 Hutool | Apache-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式