JAVA中如何实现集合去重函数?
集合去重是一种经常使用的操作,它能够将集合中重复的元素删除,使得集合中所有元素都是不同的。在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。每种方法都有其各自的优缺点,具体使用哪种方法取决于具体的使用场景。
