搜索
首页Javajava教程如何使用Java 8从ArrayList中获取唯一值?

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

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

数组列表

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

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

ArrayList<String> 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<String> fruits = new ArrayList<>();
      fruits.add("Apple");
      fruits.add("Orange");
      fruits.add("Banana");
      fruits.add("Orange");
      fruits.add("Mango");
      fruits.add("Apple");

      List<String> 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<String> animals = new ArrayList<>();
      animals.add("Lion");
      animals.add("Elephant");
      animals.add("Tiger");
      animals.add("Elephant");
      animals.add("Giraffe");
      animals.add("Lion");

      Set<String> 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进行初始化来提供另一种有效的查找唯一值的方法;任何重复的元素都会自动被消除,只留下其中的唯一条目。

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

以上是如何使用Java 8从ArrayList中获取唯一值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:tutorialspoint。如有侵权,请联系admin@php.cn删除
如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?如何将Maven或Gradle用于高级Java项目管理,构建自动化和依赖性解决方案?Mar 17, 2025 pm 05:46 PM

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)?如何使用适当的版本控制和依赖项管理创建和使用自定义Java库(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存?如何使用咖啡因或Guava Cache等库在Java应用程序中实现多层缓存?Mar 17, 2025 pm 05:44 PM

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?如何将JPA(Java持久性API)用于具有高级功能(例如缓存和懒惰加载)的对象相关映射?Mar 17, 2025 pm 05:43 PM

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?Java的类负载机制如何起作用,包括不同的类载荷及其委托模型?Mar 17, 2025 pm 05:35 PM

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用