JAVA 对象整体去重+按照对象内某个属性去重
创始人
2024-03-15 22:15:22
0

 

目录

1 根据对象中的某一个属性去重

前置知识

---TreeSet---

-----Comparator.comparing ----

2对象整体去重


1 根据对象中的某一个属性去重

前置知识

---TreeSet---


TreeSet是一个有序集合,它扩展了AbstractSet类并实现了NavigableSet接口。

有以下特点

1 它存储唯一的元素
2 它不保留元素的插入顺序
3 它按升序对元素进行排序
4 它不是线程安全的
在实现中,对象根据其自然顺序以升序排序和存储。该TreeSet中使用平衡树。

常用API

TreeSet add
TreeSet contains
TreeSet remove
TreeSet clear
TreeSet size
TreeSet isEmpty 
TreeSet iterator
TreeSet first
TreeSet last 
TreeSet subSet
TreeSet headSet

具体看

Java TreeSet - Java教程 - 菜鸟教程 (cainiaojc.com)

常用在对象元素排序中

-----Comparator.comparing ----

comparing是比较器功能接口的静态方法。

Comparator.comparing方法在Java 8中被引入。

Comparator.comparing接受一个函数,该函数从给定类型中提取一个可比较的排序键(lambda形式的键),并返回一个通过该排序键进行比较的比较器。

思路:
先使用Comparator.comparing 对对象元素排序,然后将返回的迭代器对象给TreeSet,进行去重操作

代码

    public static List toDistinctList(List list) {//标签对象,根据标签名去除重复值Set Set1 = new TreeSet<>(Comparator.comparing(Category::getCategoryName));Set1.addAll(list);list.clear();list.addAll(Set1);return list;}

测试

    @Testpublic void toDistinctList() {List list=new ArrayList<>();list.add(new Category(1L,"JAVA","s4c",""));list.add(new Category(1L,"JAVA","4sc",""));list.add(new Category(1L,"C","sc2",""));list.add(new Category(1L,"C","sc1",""));list.add(new Category(1L,"A","s5c",""));List categories = AdminBlogBo.toDistinctList(list);System.out.println(categories);}

2对象整体去重

也是使用java8的新特性

    public static List toDistinctList(List list) {list = list.stream().distinct().collect(Collectors.toList());return list;

测试

    @Testpublic void toDistinctList() {List list=new ArrayList<>();list.add(new Category(1L,"JAVA","4sc",""));list.add(new Category(1L,"JAVA","4sc",""));list.add(new Category(1L,"C","4sc",""));list.add(new Category(1L,"C","4sc",""));list.add(new Category(1L,"A","s5c",""));List categories = AdminBlogBo.toDistinctList(list);System.out.println(categories);}

结果

[Category(categoryId=1, categoryName=JAVA, categoryDescription=4sc, categoryIcon=), Category(categoryId=1, categoryName=C, categoryDescription=4sc, categoryIcon=), Category(categoryId=1, categoryName=A, categoryDescription=s5c, categoryIcon=)]
 

相关内容

热门资讯

典型案例为新就业形态劳动者权益... 转自:千龙网最高人民法院近日发布了新就业形态劳动者权益保障典型案例,聚焦网约货车领域新就业形态劳动关...
Wedbush:AI 驱动云服... 投行Wedbush证券最新研报指出,人工智能技术正深度重塑云计算产业格局,微软(MSFT.US)、亚...
赵心童获得世界斯诺克巡回赛年度... 据央视体育消息,5月9日,世界斯诺克巡回赛2024-2025赛季年终奖项公布,中国球员赵心童获得年度...
破浪同舟越重洋|当秘鲁西坎文化... 转自:CGTN 【破浪同舟越重洋|当秘鲁西坎文化邂逅古蜀...
“Q世纪:量子物理百年科普展”... 中新网合肥5月9日电 (记者 吴兰)9日,“Q世纪:量子物理百年科普展”开幕式在中国科学技术大学举行...
确保断电、碰撞等险情下车门可打... 来源:@华夏时报微博华夏时报记者 刘凯 北京报道5月8日,工业和信息化部(下称“工信部”)官网发布消...
医院通报“3岁女童确诊铊中毒” 日前,“3岁女童铊中毒”一事引发关注。5月9日,湖南省职业病防治院发布情况说明:我院5月7日发布《3...
乐普医疗:MWN109片获得药... 人民财讯5月9日电,乐普医疗(300003)5月9日晚间公告,控股子公司民为生物收到国家药品监督管理...
四川小金:打造国际山地户外运动... 中新网成都5月9日电 (尧欣雨 安源)9日,四川省政府新闻办在成都举行“万千气象看四川·县域经济高质...
匈牙利总理:接纳乌克兰加入欧盟... 当地时间9日,匈牙利总理欧尔班再次表达了反对乌克兰加入欧盟的立场。欧尔班称,接纳乌克兰加入欧盟无异于...
龙芯中科四股东拟减持,合计不超... 龙芯中科于5月10日发布股东减持股份计划公告,中科百孚、北工投资、横琴利禾博、鼎晖华蕴及鼎晖祁贤拟减...
润欣科技(300493.SZ)... 格隆汇5月9日丨润欣科技(300493.SZ)公布,持有公司股份总数105,854,500股(占公司...
中核钛白:首次回购约627万股 中核钛白(维权)(SZ 002145,收盘价:4.25元)5月9日晚间发布公告称,公司于2025年5...
院方回应“3岁女童确诊‘铊中毒... 针对“3岁女童大量脱发确诊‘铊中毒’”一事,湖南省职业病防治院9日发布情况说明:我院5月7日发布《3...
“严查重处违法违规行为”!国务... 撰文丨高语阳 余晖5月7日至8日,中共中央政治局委员、国务院副总理张国清在河南调研食品安全和市场监管...
三花智控:发行境外上市股份(H... 人民财讯5月9日电,三花智控(002050)5月9日晚间公告,公司于近日收到中国证监会出具的《关于浙...
“公司当前确实遇到了经营困难”... 转自:财联社财联社5月9日讯(记者 何凡)九价HPV疫苗从“一针难求”到“卖不动”,曾经的疫苗一哥智...
春雪食品:计划今年新增调理品产... 财联社5月9日讯(记者 肖良华)2024年白羽鸡行情相对低迷,不过,春雪食品(605567.SH)...
菱电电控:截至4月30日股东人... 证券日报网讯菱电电控(维权)5月9日在互动平台回答投资者提问时表示,截至2025年4月30日,公司股...
润欣科技:润欣信息拟减持不超3... 润欣科技晚间公告,公司控股股东润欣信息持有公司股份总数1.06亿股,占公司总股本5.13亿股的20....