在 Java 中将 ArrayList 转换为 Set
ArrayList 是 List 接口的实现类,用于以线性顺序存储数据,而 set 是具有 HashSet 类来存储数据的接口。这两者之间的主要区别是 HashSet 不允许重复元素并存储唯一元素。
本篇文章将介绍将 ArrayList 转换为 HashSet 的不同方法。
在 Java 中使用 Naive 方法将 ArrayList 转换为 HashSet
这是将列表转换为集合的最基本方法。
在这种方法中,我们首先声明一个空集。然后我们遍历列表并使用 HashSet.add()
方法将其元素一一添加到集合中。当循环终止时,列表被转换为一个集合。
看看下面的代码。
import java.util.*;
public class SimpleTesting {
public static void main(String args[]) {
// initialise a list
List<String> list = Arrays.asList("Karan", "Rahul", "Jay", "Laxman", "Praful", "Kushagra", "Karan");
//intialise a set
Set<String> set = new HashSet<String>();
// apply for loop
for(String ele : list){
set.add(ele);
}
// display the set
for(String ele : set){
System.out.println(ele);
}
}
}
输出:
Rahul
Kushagra
Jay
Karan
Laxman
Praful
在上面的代码中,我们创建了一个存储一些名称的列表。我们还初始化了一个名为 set 的空 Set。
然后我们遍历列表并添加其元素以一一设置。最后,我们打印集合的元素。请注意如何消除列表中的重复元素。
使用 Java 中的构造函数将 ArrayList 转换为 HashSet
这种方法是所有方法中最简单的。在这种方法中,我们将需要转换的列表传递给 HashSet 类的构造函数。
这消除了之前方法中所需的 for
循环的需要。构造函数返回一个包含所有唯一元素的新集合。
看看下面的代码。
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class SimpleTesting {
public static void main(String args[])
{
// initialise a list
List<String> list = Arrays.asList("Karan", "Rahul", "Jay", "Laxman", "Praful", "Kushagra", "Karan");
//intialise a set
Set<String> set = new HashSet<String>(list);
// display the set
for(String ele : set){
System.out.println(ele);
}
}
}
输出:
Rahul
Kushagra
Jay
Karan
Laxman
Praful
在上面的代码中,我们创建了一个存储一些名称的列表。我们还初始化了一个名为 set 的空 Set。
我们将列表作为参数传递给 HashMap 的构造函数。最后,我们打印集合的元素。请注意如何消除列表中的重复元素。
使用 Java 8 Stream API 将 ArrayList 转换为 HashSet
在这种方法中,我们使用 Java 8 Stream API 将 ArrayList 转换为 HashSet。我们首先将列表转换为流。然后我们将 collect
函数应用于流。
为了转换成一个集合,我们在 collect
操作中使用 Collectors.toSet()
函数来获取一个集合。看看下面的代码。
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class SimpleTesting {
public static void main(String args[])
{
// initialise a list
List<String> list = Arrays.asList("Karan", "Rahul", "Jay", "Laxman", "Praful", "Kushagra", "Karan");
//intialise a set using stream
Set<String> set = list.stream().collect(Collectors.toSet());
// display the set
for(String ele : set){
System.out.println(ele);
}
}
}
输出:
Rahul
Kushagra
Jay
Karan
Laxman
Praful
我们使用上面代码中的 List.stream()
函数将列表转换为流。我们将 collect
操作应用于流并将 Collectors.toSet()
方法作为参数传递。
这导致将流转换为集合。然后我们将这个集合存储在变量集合中。
使用 Java 中的 Set.copyOf()
方法将 ArrayList 转换为 HashSet
Java 10 提供了一个 Set.copyof()
方法,该方法将 Collection 作为其参数并返回一个包含给定 Collection 元素的不可变集合。在这种方法中,我们使用 Set.copyOf()
方法将 ArrayList 转换为 HashSet。
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class SimpleTesting {
public static void main(String args[])
{
// initialise a list
List<String> list = Arrays.asList("Karan", "Rahul", "Jay", "Laxman", "Praful", "Kushagra", "Karan");
//intialise a set
Set<String> set = Set.copyOf(list);
// display the set
for(String ele : set){
System.out.println(ele);
}
}
}
输出:
Rahul
Kushagra
Jay
Karan
Laxman
Praful
在 Java 中使用 Apache Commons 集合库将 ArrayList 转换为 HashSet
如果你正在使用 Apache Commons Collection 库,请使用带有两个参数的 CollectionUtils.addAll()
方法:目标集合对象和源集合对象。
源集合对象的值被复制到目标集合对象中并创建一个集合。看看下面的代码。
此代码使用 Apache 公共库的依赖代码。首先,将此依赖项添加到你的 Java 项目中以成功执行此代码。
<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
import java.util.*;
public class SimpleTesting {
public static void main(String args[]) {
// initialise a list
List<String> sourcelist = Arrays.asList("Karan", "Rahul", "Jay", "Laxman", "Praful", "Kushagra", "Karan");
//intialise a set
Set<String> targetset = new HashSet<String>();
// Adding elements
CollectionUtils.addAll(targetset, sourcelist);
// display the set
for(String ele : targetset){
System.out.println(ele);
}
}
}
输出:
Rahul
Kushagra
Jay
Karan
Laxman
Praful
相关文章
Java 中的纸牌洗牌
发布时间:2023/05/16 浏览次数:72 分类:Java
-
本文介绍如何在 Java 中洗一副牌。使用 Java 中的传统循环打乱 ArrayList。类似地,在 Java 中,各种方法允许用户随机播放元素。下面是演示此过程的代码块。
Java 中将列表转换为 ArrayList
发布时间:2023/05/16 浏览次数:155 分类:Java
-
在 Java 中将 List 转换为 ArrayList 的方法。在本篇文章中,我们讨论了如何在 Java 中将列表转换为 ArrayList。
Java 中 ArrayList 和 LinkedList 的区别
发布时间:2023/05/16 浏览次数:126 分类:Java
-
本文介绍 Java 中 ArrayList 和 LinkedList 的区别。ArrayList 和 LinkedList 都用于存储数据,但由于实现类型的不同而存在一些差异。
Java 中将字节转换为整数
发布时间:2023/05/16 浏览次数:139 分类:Java
-
本文重点介绍如何使用 Byte Wrapper Class 和 Casting 在 Java 中将字节转换为 int 数据类型。字节数据类型定义为 8 位有符号二进制补码整数,而 int 数据类型可归类为 32 位有符号二进制补码整数。除
Java 错误 Class Has Been Compiled by a More Recent Version of Java Runtime
发布时间:2023/05/16 浏览次数:88 分类:Java
-
Java 错误消息 Class Has Been Compiled by a More Recent Version of Java Runtime 显示了不受支持的类版本。 它说类文件版本是63,当前Java运行时可以编译Java代码直到类文件版本61。
Java 中错误 Java.Lang.OutOfMemoryError: Unable to Create New Native Thread
发布时间:2023/05/16 浏览次数:188 分类:Java
-
在本文中,我们将了解 java.lang.OutOfMemoryError: unable to create new native thread 错误。无法在 Java 中创建新的本机线程错误
Java 中必须捕获或声明抛出未报告的异常
发布时间:2023/05/16 浏览次数:183 分类:Java
-
本文将介绍未报告的异常必须被捕获或声明为在 Java 中抛出的编译时错误。Java 是一种面向对象的强类型编译语言,具有类的概念来利用编程的不同方面,如继承和多态性。 它还很好地支持处理
Java 中错误 Error: Class, Interface, or Enum Expected 修复
发布时间:2023/05/16 浏览次数:86 分类:Java
-
Java 是一种面向对象的强类型编译语言,具有类的概念来利用编程的不同方面,如继承和多态性。 本文将介绍编译时错误 error: class, interface, or enum expected 。
Java 中 Identifier Expected Error 错误
发布时间:2023/05/16 浏览次数:166 分类:Java
-
在本文中,我们将了解 Java 的 <identifier> 预期错误。了解 Java 中的 <identifier> 预期错误 <identifier> 预期是新手程序员面临的最常见的 Java 编译时错误。