,,Java关于List集合去重方案详细介绍

,,Java关于List集合去重方案详细介绍

实际项目开发中,很多业务场景下都会遇见集合去重。在说到目录集合去重之前,首先我们回顾下普通类型的目录如何去重

1 常规去重

碰到目录去重的问题,除了遍历去重,我们常常想到利用一组集合不允许重复元素的特点,通过目录和一组互转,来去掉重复元素。

//遍历后判断赋给另一个目录集合,保持原来顺序

公共静态void rid重复1(ListString列表){

系统。出去。println(' list=[' list ']');

ListString list new=new ArrayList string();

for (String str : list) {

如果(!listNew.contains(str)) {

列出新的。add(str);

}

}

系统。出去。println(' list new=[' list new ']');

}

//设置集合去重,保持原来顺序

public static void rid repeat 2(ListString list){

系统。出去。println(' list=[' list ']');

ListString list new=new ArrayList string();

set set=new HashSet();

for (String str : list) {

if (set.add(str)) {

列出新的。add(str);

}

}

系统。出去。println(' list new=[' list new ']');

}

//设置去重由于集合(哈希集)的无序性,不会保持原来顺序

公共静态void rid重复3(ListString列表){

系统。出去。println(' list=[' list ']');

set set=new HashSet();

ListString list new=new ArrayList string();

设置。addall(列表);

列出新的。addall(集合);

系统。出去。println(' list new=[' list new ']');

}

//设置通过哈希特去重(将ridRepeat3方法缩减为一行)无序

公共静态void rid重复4(ListString列表){

系统。出去。println(' list=[' list ']');

ListString list new=new ArrayList string(new HashSet(list));

系统。出去。println(' list new=[' list new ']');

}

//设置通过树集去重会按字典顺序重排序

public static void rid repeat 5(ListString list){

系统。出去。println(' list=[' list ']');

ListString list new=new ArrayList string(new TreeSetString(list));

系统。出去。println(' list new=[' list new ']');

}

//设置通过LinkedHashSet去重保持原来顺序

公共静态void rid重复6(ListString列表){

系统。出去。println(' list=[' list ']');

ListString list new=new ArrayList string(new LinkedHashSetString(list));

系统。出去。println(' list new=[' list new ']');

}

stream去重

//利用java8的溪流去重

List uniqueList=list.stream().独特()。收藏(收藏者。to list());

系统。出去。println(uniquelist。tostring());

上面的方法在目录元素为基本数据类型及线类型时是可以的,但是如果目录集合元素为对象,却失效了!

2 对象去重

可利用为循环遍历的方式进行判断去重,很简单不赘述,看如下方法:

2.1 stream去重

//根据名字属性去重

ListUser唯一名称list=userList。流()。收集(收集然后(

toCollection(() -新树集(比较(User:getName))、ArrayList:new)

);

System.out.println('根据名字去重后集合元素:'唯一名称列表。tostring());

//根据姓名,年龄属性去重

ListUser uniqueNameAndAgeList=userList。流()。收集(收集然后(

toCollection(() -新树集(比较(o-o . getname()';'o.getAge()))),ArrayList:new)

);

System.out.println('根据姓名,年龄去重后集合元素:' uniquenameandagelist。tostring());

输出结果:

重写equals()、hashCode()

//重写等于方法

@覆盖

公共布尔等于(对象对象){

用户用户=(用户obj

返回名称。等于(用户。getname())(年龄==用户。getage());

}

//重写哈希码方法

@覆盖

public int hashCode() {

字符串str=姓名年龄;

返回海峡。hashcode();

}

关于Java对列表集重复数据删除方案的详细介绍,本文到此结束。有关更多相关的Java列表集重复数据删除内容,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: