场景:我们需要将重复的元素从数据集中删除。此时可以使用HashSet、stream和Looping。
一、使用HashSet进行去重
HashSet较为常见,由于HashSet是一个不包含重复元素的集合,当添加重复元素时,HashSet会自动进行去重。
import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; public class Main { public static void main(String[] args) { // 初始化列表 Listlist = Arrays.asList("A", "B", "A", "C", "D", "B", "D"); System.out.println("Original List : " + list); // 使用HashSet进行去重 Setset = new HashSet<>(list); System.out.println("List after removing duplicates : " + set); } }
二、使用Java 8 Stream 进行去重
Java 8 引入了 Stream API,Stream 的 distinct() 方法可以去除重复的元素,生成一个新的没有重复元素的流。
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { // 初始化列表 Listlist = Arrays.asList("A", "B", "A", "C", "D", "B", "D"); System.out.println("Original List : " + list); // 使用Java 8 Stream 进行去重 ListdistinctList = list.stream().distinct().collect(Collectors.toList()); System.out.println("List after removing duplicates : " + distinctList); } }
三、使用循环检测进行去重
除了使用内置函数或数据结构外,还可以通过循环检测和比较来实现去重操作
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { // 初始化列表 Listlist = Arrays.asList("A", "B", "A", "C", "D", "B", "D"); System.out.println("Original List : " + list); // 使用循环进行去重 ListdistinctList = new ArrayList<>(); for (String s : list) { if (!distinctList.contains(s)) { distinctList.add(s); } } System.out.println("List after removing duplicates : " + distinctList); } }