List 去重的 6 种方法[通俗易懂] | 您所在的位置:网站首页 › java中list集合去重 › List 去重的 6 种方法[通俗易懂] |
![]() List 去重的 6 种方法[通俗易懂]方法1:contains判断去重(有序)要进行数据去重,我们首先想到的是新建一个集合,然后循环原来的集合,每次循环判断原集合中的循环项,如果当前循环的数据,没有在新集合中存在就插入,已经存在了就舍弃,这样当循环执行完,我们就得到了一个没有重复元素的集合了,实现代码如下:publicclassListController{publicstaticvoidmain(String[]args){Listlist=newArra 大家好,又见面了,我是你们的朋友全栈君。 方法1:contains判断去重(有序)要进行数据去重,我们首先想到的是新建一个集合,然后循环原来的集合,每次循环判断原集合中的循环项,如果当前循环的数据,没有在新集合中存在就插入,已经存在了就舍弃,这样当循环执行完,我们就得到了一个没有重复元素的集合了,实现代码如下: public class ListController { public static void main(String[] args) { List list = new ArrayList() { { add(1); add(2); add(5); add(4); add(5); add(3); add(7); add(8); add(9); add(8); add(5); add(4); add(5); add(6); }}; System.out.println("原集合:" + list); ListMethod(list); } /** * 使用迭代器去重 * * @param list */ public static void ListMethod(List list) { // 新集合 List newList = new ArrayList(list.size()); list.forEach(i -> { if (!newList.contains(i)) { // 如果新集合中不存在则插入 newList.add(i); } }); System.out.println("去重集合:" + newList); } }以上程序执行的结果,如下所示: 自定义 List 去重,除了上面的新建集合之外,我们也可以使用迭代器循环判断每一项数据,如果当前循环的数据,在集合中存在两份或两份以上,就将当前的元素删除掉,这样循环完之后,也可以得到一个没有重复数据的集合,实现代码如下: public class ListController { public static void main(String[] args) { List list = new ArrayList() { { add(1); add(2); add(5); add(4); add(5); add(3); add(7); add(8); add(9); add(8); add(5); add(4); add(5); add(6); }}; System.out.println("原集合:" + list); ListMethod(list); } /** * 使用迭代器去重 * * @param list */ public static void ListMethod(List list) { // 新集合 List newList = new ArrayList(list.size()); list.forEach(i -> { if (!newList.contains(i)) { // 如果新集合中不存在则插入 newList.add(i); } }); System.out.println("去重集合:" + newList); } }以上程序执行的结果,如下所示: 我们知道 HashSet 天生具备“去重”的特性,那我们只需要将 List 集合转换成 HashSet 集合就可以了,实现代码如下: public class ListController { public static void main(String[] args) { List list = new ArrayList() { { add(1); add(2); add(5); add(4); add(5); add(3); add(7); add(8); add(9); add(8); add(5); add(4); add(5); add(6); }}; System.out.println("原集合:" + list); ListMethod(list); } /** * 使用 HashSet 去重 * @param list */ public static void ListMethod(List list) { HashSet set = new HashSet(list); System.out.println("去重集合:" + set); } }以上程序执行的结果,如下所示: 既然 HashSet 会自动排序不能满足需求,那就使用 LinkedHashSet,它既能去重又能保证集合的顺序,实现代码如下: public class ListController { public static void main(String[] args) { List list = new ArrayList() { { add(1); add(2); add(5); add(4); add(5); add(3); add(7); add(8); add(9); add(8); add(5); add(4); add(5); add(6); }}; System.out.println("原集合:" + list); ListMethod(list); } /** * 使用 LinkedHashSet 去重 * @param list */ public static void ListMethod(List list) { LinkedHashSet set = new LinkedHashSet(list); System.out.println("去重集合:" + set); } }以上程序执行的结果,如下所示: 除了以上的 Set 集合之外,我们还可以使用 TreeSet 集合来实现去重功能,实现代码如下: public class ListController { public static void main(String[] args) { List list = new ArrayList() { { add(1); add(2); add(5); add(4); add(5); add(3); add(7); add(8); add(9); add(8); add(5); add(4); add(5); add(6); }}; System.out.println("原集合:" + list); ListMethod(list); } /** * 使用 TreeSet 去重(无序) * @param list */ public static void ListMethod(List list) { TreeSet set = new TreeSet(list); System.out.println("去重集合:" + set); } }以上程序执行的结果,如下所示: JDK 8 为我们带来了一个非常实用的方法 Stream,使用它可以实现很多功能,比如下面的去重功能: public class ListController { public static void main(String[] args) { List list = new ArrayList() { { add(1); add(2); add(5); add(4); add(5); add(3); add(7); add(8); add(9); add(8); add(5); add(4); add(5); add(6); }}; System.out.println("原集合:" + list); ListMethod(list); } /** * 使用 Stream 去重 * @param list */ public static void ListMethod(List list) { list = list.stream().distinct().collect(Collectors.toList()); System.out.println("去重集合:" + list); } }以上程序执行的结果,如下所示: 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141370.html原文链接:https://javaforall.cn 【正版授权,激活自己账号】: Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺 【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号... 赞 (0)![]() |
CopyRight 2018-2019 实验室设备网 版权所有 |