Java 把列表转换为集合
Java Set 是java.util包的一部分,扩展了java.util.Collection接口。它不允许使用重复的元素,最多只能容纳一个空元素。Java Set接口的几个重要特征如下。
- 集合接口是一个无序的对象集合,其中不能存储重复的值。
- Java Set不提供对插入或删除元素的位置的控制。
- 基本上,Set是由HashSet、LinkedHashSet或TreeSet(排序表示)实现的。
- Set有各种方法来增加、删除清除、大小等,以加强这个接口的使用。
在这篇文章中,我们将讨论在Java中把List接口转换成Set的不同方法。
方法1:Native方法 :Native方法是创建一个空集,并将指定列表中的每个元素添加到新创建的集合中。下面是Native的方法的实现。
// Java Program to convert
// List to Set in Java 8
import java.util.*;
import java.util.stream.*;
import java.util.function.Function;
class GFG {
// Generic function to convert list to set
public static <T> Set<T> convertListToSet(List<T> list)
{
// create an empty set
Set<T> set = new HashSet<>();
// Add each element of list into the set
for (T t : list)
set.add(t);
// return the set
return set;
}
public static void main(String args[])
{
// Create a stream of integers
List<String> list = Arrays.asList("GeeksForGeeks",
"Geeks",
"forGeeks",
"A computer portal",
"for",
"Geeks");
// Print the List
System.out.println("List: " + list);
// Convert List to stream
Set<String> set = convertListToSet(list);
// Print the Set
System.out.println("Set from List: " + set);
}
}
输出
List: [GeeksForGeeks, Geeks, forGeeks, A computer portal, for, Geeks]
Set from List: [Geeks, for, GeeksForGeeks, A computer portal, forGeeks]
方法2:使用构造函数 :HashSet构造函数可以接受另一个集合对象来构造一个包含指定列表元素的新集合。下面是上述方法的实现。
// Java Program to convert
// List to Set in Java 8
import java.util.*;
import java.util.stream.*;
class GFG {
// Generic function to convert list to set
public static& lt;
T& gt;
Set& lt;
T& gt;
convertListToSet(List& lt; T & gt; list)
{
// create a set from the List
return new HashSet& lt;
>
(list);
}
public static void main(String args[])
{
// Create a stream of integers
List& lt;
String& gt; list = Arrays.asList("GeeksForGeeks",
"Geeks",
"forGeeks",
"A computer portal",
"for",
"Geeks");
// Print the List
System.out.println(" List : " + list);
// Convert List to stream
Set& lt;
String& gt;
set = convertListToSet(list);
// Print the Set
System.out.println(" Set from List
: "
+ set);
}
}
输出
List: [GeeksForGeeks, Geeks, forGeeks, A computer portal, for, Geeks]
Set from List: [Geeks, for, GeeksForGeeks, A computer portal, forGeeks]
方法3:使用Java 8 Stream API :HashSet构造函数可以接受另一个集合对象来构造一个包含指定列表元素的新集合。下面是上述方法的实现。
// Java Program to convert
// List to Set in Java 8
import java.util.*;
import java.util.stream.*;
class GFG {
// Generic function to convert list to set
public static <T> Set<T> convertListToSet(List<T> list)
{
// create a set from the List
return list.stream().collect(Collectors.toSet());
}
public static void main(String args[])
{
// Create a stream of integers
List<String> list = Arrays.asList("GeeksForGeeks",
"Geeks",
"forGeeks",
"A computer portal",
"for",
"Geeks");
// Print the List
System.out.println("List: " + list);
// Convert List to stream
Set<String> set = convertListToSet(list);
// Print the Set
System.out.println("Set from List: " + set);
}
}
输出
List: [GeeksForGeeks, Geeks, forGeeks, A computer portal, for, Geeks]
Set from List: [Geeks, for, GeeksForGeeks, A computer portal, forGeeks]
方法4:使用Guava Sets.newHashSet() : Sets.newHashSet()创建一个包含指定列表元素的可变HashSet实例。下面是上述方法的实现。
// Java Program to convert
// List to Set in Java 8
import java.util.*;
import java.util.stream.*;
class GFG {
// Generic function to convert list to set
public static <T> Set<T> convertListToSet(List<T> list)
{
// create a set from the List
return return Sets.newHashSet(list);
}
public static void main(String args[])
{
// Create a stream of integers
List<String> list = Arrays.asList("GeeksForGeeks",
"Geeks",
"forGeeks",
"A computer portal",
"for",
"Geeks");
// Print the List
System.out.println("List: " + list);
// Convert List to stream
Set<String> set = convertListToSet(list);
// Print the Set
System.out.println("Set from List: " + set);
}
}
输出
List: [GeeksForGeeks, Geeks, forGeeks, A computer portal, for, Geeks]
Set from List: [Geeks, for, GeeksForGeeks, A computer portal, forGeeks]
方法5:在集合包中使用addAll()方法
在这里,我们可以通过使用addAll()方法将列表项转换为集合。为此,我们必须导入 java.util.Collection 包 。
这个 addAll(Collection c) 方法是一个布尔数据类型。它用于将一个对象的集合添加到另一个对象的集合中。
import java.util.*;
import java.util.stream.*;
class GFG {
// Generic function to convert list to set
public static <T> Set<T> convertListToSet(List<T> list)
{
// create a set from the List using addAll() method
HashSet<T> set = new HashSet<>();
set.addAll(list);
return set;
}
public static void main(String args[])
{
// Create a stream of integers
List<String> list = Arrays.asList(
"GeeksForGeeks", "Geeks", "forGeeks",
"A computer portal", "for", "Geeks");
// Print the List
System.out.println("List: " + list);
// Convert List to stream
Set<String> set = convertListToSet(list);
// Print the Set
System.out.println("Set from List: " + set);
}
}
输出
List: [GeeksForGeeks, Geeks, forGeeks, A computer portal, for, Geeks]
Set from List: [Geeks, for, GeeksForGeeks, A computer portal, forGeeks]