java去除集合中重复元素示例分享 java去除重复


在Java中,去除集合中的重复元素通常依赖于`Set`接口的实现类,如`HashSet`,因为`Set`集合本身不允许有重复的元素。但如果你有一个`List`集合并希望去除其中的重复项,你可以先将`List`转换为`Set`,然后再转换回`List`(如果需要保持元素的插入顺序,可以使用`LinkedHashSet`),或者使用Java 8及以上版本的Stream API来实现。

### 使用`LinkedHashSet`保持顺序


import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;

public class RemoveDuplicates {
    public static void main(String[] args) {
        List<String> listWithDuplicates = Arrays.asList("apple", "banana", "apple", "orange", "banana", "grape");

        // 使用LinkedHashSet去除重复项并保持顺序
        List<String> listWithoutDuplicates = new ArrayList<>(new LinkedHashSet<>(listWithDuplicates));

        // 打印结果
        System.out.println(listWithoutDuplicates);
    }
}

### 使用Stream API

如果你使用的是Java 8或更高版本,并且希望代码更加现代和灵活,可以使用Stream API来过滤重复项。但请注意,Stream API默认不会保持元素的插入顺序(除非你使用了`sorted()`或者与`LinkedHashSet`结合使用),但如果你不关心顺序,这仍然是一个很好的选择。


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

public class RemoveDuplicatesWithStream {
    public static void main(String[] args) {
        List<String> listWithDuplicates = Arrays.asList("apple", "banana", "apple", "orange", "banana", "grape");

        // 使用Stream API去除重复项
        List<String> listWithoutDuplicates = listWithDuplicates.stream()
                .distinct() // 去除重复项
                .collect(Collectors.toList()); // 收集到新的List中

        // 打印结果
        System.out.println(listWithoutDuplicates);
    }
}

注意:`Stream`的`distinct()`方法不会保证元素的顺序,如果你需要保持元素的顺序,应该使用`LinkedHashSet`的方法。