欢迎访问宙启技术站
智能推送

JAVA中如何实现集合去重函数?

发布时间:2023-06-15 07:11:39

集合去重是一种经常使用的操作,它能够将集合中重复的元素删除,使得集合中所有元素都是不同的。在JAVA中,实现集合去重的方式有很多种,下面我们一一介绍。

一、利用HashSet

HashSet是一个无序的、不重复的集合。当我们进行集合去重时,可以使用HashSet的构造函数将去重后的元素添加到HashSet中,最后再将HashSet转化成List即可得到去重后的集合。示例代码如下:

List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,2,3,4,5));
Set<Integer> set = new HashSet<Integer>(list);
List<Integer> newList = new ArrayList<Integer>(set);

上面的代码中,我们首先定义了一个List集合,然后通过HashSet的构造函数将List中的元素去重,并且将去重后的元素添加到HashSet中。最后,我们将HashSet转化成List,得到去重后的集合。

二、利用TreeSet

TreeSet是按照自然排序顺序排序的集合。当我们利用TreeSet进行集合去重时,可以直接将元素添加到TreeSet中,由于TreeSet不允许重复元素存在,所以TreeSet会自动去除重复元素。示例代码如下:

List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,2,3,4,5));
Set<Integer> set = new TreeSet<Integer>(list);
List<Integer> newList = new ArrayList<Integer>(set);

上面的代码和利用HashSet的方法基本一致,只是将HashSet换成了TreeSet。

三、利用Stream API

JAVA 8引入了Stream API,通过Stream API可以非常方便地进行集合操作。当我们需要对集合进行去重时,可以利用Stream API的distinct()方法,该方法能够返回一个去重后的新流,我们只需要将新流转化成List即可得到去重后的集合。示例代码如下:

List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,2,3,4,5));
List<Integer> newList = list.stream().distinct().collect(Collectors.toList());

上面的代码中,我们首先定义了一个List集合,然后利用Stream API的distinct()方法将集合中重复的元素去除,最后使用Collectors.toList()方法将新流转化成List,得到去重后的集合。

四、利用HashMap

我们也可以利用HashMap对集合进行去重。定义一个新的HashMap,在遍历集合的时候,将集合中的元素作为Map的key,并将值设为true,这样HashMap中就只会保留不重复的元素。最后将HashMap中的key值取出,放入List集合中返回即可。示例代码如下:

List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,2,3,4,5));
Map<Integer, Boolean> map = new HashMap<Integer, Boolean>();
for(Integer i : list){
    map.put(i,true);
}
List<Integer> newList = new ArrayList<Integer>(map.keySet());

上面的代码中,我们首先定义了一个List集合和一个新的HashMap,然后遍历集合,将集合中的元素作为Map的key,并将值设为true,这样HashMap中就只会保留不重复的元素。最后利用Map的keySet()方法取出所有的key值,放入List集合中返回,得到去重后的集合。

综上所述,我们在JAVA中实现集合去重主要有四种方法:利用HashSet、利用TreeSet、利用Stream API、利用HashMap。每种方法都有其各自的优缺点,具体使用哪种方法取决于具体的使用场景。