0

0

如何使用Java 8从ArrayList中获取唯一值?

WBOY

WBOY

发布时间:2023-09-05 11:01:02

|

1754人浏览过

|

来源于tutorialspoint

转载

如何使用java 8从arraylist中获取唯一值?

通过利用Java 8的函数式编程特性,如Stream API、流和lambda表达式,从ArrayList中提取唯一值变得更简单和更快。利用这些功能,您可以无需繁琐的迭代或手动检查就可以提取不同的元素;lambda表达式允许编写简洁而易读的代码,使这个任务变得更简单。无论是处理大型数据集还是仅仅消除重复项,Java 8都提供了强大而优雅的解决方案来从ArrayList中检索唯一值

数组列表

Java 的 ArrayList 类实现 List 接口,提供类似动态数组的功能,用于存储和操作可调整数组中的元素集合。当在 ArrayList 数组中添加或删除元素时,其大小会自动调整,从而提供灵活性和便利性。

在ArrayList中存在多种方法来访问、修改、添加和删除元素。可以使用get()方法访问元素,并使用set()方法进行修改;此外,还可以使用add()方法在列表的特定位置添加元素,使用remove()方法在特定位置删除元素,或在列表末尾添加或删除元素

ArrayList names = new ArrayList<>();

方法

Java 8提供了几种在arrayList中查找唯一值的方法。下面是两种经常使用的策略。

  • 使用Stream和distinct()

  • 使用哈希集

这两种方法都提供了一种使用 Java 8 功能从 ArrayList 中提取唯一值的有效方法,因此只需选择最能满足您的要求和编码风格的方法即可。

使用Stream和distinct()

首先,通过调用ArrayList的stream()方法将其转换为流;然后在该流上使用 unique() 来过滤掉重复的值,以便只保留唯一的项目。为了从流中提取唯一值,带有适当收集器的collect()方法允许检索它们。

为了最佳使用distinct(),请确保ArrayList中的元素已正确重写equals()方法以确保它们的唯一性,并正确定义自己作为不同的元素

算法

  • 创建 ArrayList 并为其填充元素。

  • 使用stream()方法将ArrayList转换为流

  • 在 Stream 上应用 unique() 方法以消除重复值并仅保留唯一值。

  • 使用collect()方法和适当的收集器将流转换回ArrayList或其他适当的集合

  • 这个新的 ArrayList 将仅包含来自其源 ArrayList 的唯一值。

程序

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class UniqueValuesExample {
   public static void main(String[] args) {
      List fruits = new ArrayList<>();
      fruits.add("Apple");
      fruits.add("Orange");
      fruits.add("Banana");
      fruits.add("Orange");
      fruits.add("Mango");
      fruits.add("Apple");

      List uniqueFruits = fruits.stream()
         .distinct()
         .collect(Collectors.toList());

      System.out.println("Unique fruits: " + uniqueFruits);
   }
}

输出

Unique fruits: [Apple, Orange, Banana, Mango]

使用 HashSet

启动编辑器。将HashSet对象组装为一个集合,该集合保存唯一元素,然后逐个遍历ArrayList中的每个元素将其添加到HashSet中,注意任何出现的重复值。由于HashSet不允许重复值存在,ArrayList中的任何重复数据都将被HashSet自动消除

迭代 ArrayList 后,创建仅包含原始列表中唯一值的 HashSet 允许您直接访问这些特定值或转换回 ArrayList 以进行进一步访问。

这种方法利用了HashSet的固有唯一性约束,可以快速从ArrayList中检索唯一的值,在Java 8中提供了一种方便的解决方案。

算法

  • 创建 ArrayList 并为其填充元素。

  • 创建一个 HashSet 对象。

  • 遍历ArrayList中的每个元素

  • 使用add()方法将每个元素添加到HashSet中

    • HashSet 将自动消除重复值,因为它只存储唯一的值。

  • 遍历 ArrayList 后,HashSet 将仅包含原始列表中的那些唯一值。

  • 如果需要的话,可以将HashSet切换回ArrayList,或直接将其用作查找其中唯一值的访问工具

程序

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class UniqueValuesExample {
   public static void main(String[] args) {
      List animals = new ArrayList<>();
      animals.add("Lion");
      animals.add("Elephant");
      animals.add("Tiger");
      animals.add("Elephant");
      animals.add("Giraffe");
      animals.add("Lion");

      Set uniqueAnimals = new HashSet<>(animals);

      System.out.println("Unique animals: " + uniqueAnimals);
   }
}

输出

Unique animals: [Elephant, Lion, Tiger, Giraffe]

结论

在本教程中,我们了解了 Java 8 如何提供高效且优雅的解决方案来从 ArrayList 中提取唯一值。通过利用其 Stream API 的 unique() 方法并从 ArrayList 中快速消除重复项以获得新的唯一项,以及其函数式编程功能可实现简洁而可读的代码,开发人员可以轻松、快速、高效地完成此任务。

HashSet还可以通过使用ArrayList进行初始化来提供另一种有效的查找唯一值的方法;任何重复的元素都会自动被消除,只留下其中的唯一条目。

Background Eraser
Background Eraser

AI自动删除图片背景

下载

Java 8在处理从ArrayList中提取唯一值的任务时的灵活性和便利性从这些方法中可以清楚地看出来;这两种方法都利用了它的Stream API或HashSet实现,以实现最大的生产力,帮助开发人员轻松实现他们的目标。

立即学习Java免费学习笔记(深入)”;

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

0

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

56

2026.01.21

三角洲入口地址合集
三角洲入口地址合集

本专题整合了三角洲入口地址合集,阅读专题下面的文章了解更多详细内容。

51

2026.01.21

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

397

2026.01.21

妖精漫画入口地址合集
妖精漫画入口地址合集

本专题整合了妖精漫画入口地址合集,阅读专题下面的文章了解更多详细内容。

118

2026.01.21

java版本选择建议
java版本选择建议

本专题整合了java版本相关合集,阅读专题下面的文章了解更多详细内容。

3

2026.01.21

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

11

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号