您的位置:

Java List 转 Set 的方法

一、基本介绍

在Java中,List和Set都是常见的集合类型。其中,List是有序的,元素在其中的位置是有编号的,可以重复;而Set是无序的,不允许有重复元素。有时候我们需要将List转换为Set,这样可以去除其中的重复元素。

下面分别介绍两种将List转换为Set的方法。

二、使用构造函数实现转换

Set接口的实现类都有一个可以接收Collection类型的构造函数,可以将其中的元素加入到Set中。我们可以使用这个构造函数来实现将List转为Set的目的。示例代码如下:

public static void main(String[] args) {
    List list = new ArrayList<>();
    list.add("apple");
    list.add("banana");
    list.add("cherry");
    list.add("banana");
    Set
    set = new HashSet<>(list);
    System.out.println(set);
}

   
  

运行结果为:

[banana, cherry, apple]

可以看到,List中的重复元素被去除了。需要注意的是,在使用这个方法时,应当确保List中的元素已经重写了equals()和hashCode()方法,不然可能会导致无法正确识别并去除重复元素。

三、使用Java 8的stream API实现转换

在Java 8中,可以使用Stream API来实现List转Set。示例代码如下:

public static void main(String[] args) {
    List list = new ArrayList<>();
    list.add("apple");
    list.add("banana");
    list.add("cherry");
    list.add("banana");
    Set
    set = list.stream().collect(Collectors.toSet());
    System.out.println(set);
}

   
  

运行结果为:

[banana, cherry, apple]

可以看到,这种方法也可以去掉List中的重复元素。

需要注意的是,这种方法并没有增加代码的可读性,因此只适合在代码中需要大量使用Stream API的情况下使用。

四、总结

本文介绍了两种将List转换为Set的方法:使用构造函数和使用Java 8的Stream API。这两种方法都可以实现将List中的重复元素去重的目的。需要根据实际情况来选择哪一种方法。如果需要使用Java 8的Stream API,可以考虑使用第二种方法,否则可以使用第一种方法。