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

 

目录

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=)]
 

相关内容

热门资讯

揭秘一下!wpk辅助挂多功能透... 揭秘一下!wpk辅助挂多功能透视工具,好像真的有挂(发现有挂)揭秘一下!wpk辅助挂多功能透视工具,...
最新技巧!德普之星辅助挂多功能... 您好,德普之星这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在这款...
实测必看!aapoker辅助挂... 实测必看!aapoker辅助挂多功能透视工具,一贯是有挂(有挂教程)1)aapoker免费钻石:进一...
终于清楚!智星菠萝德州辅助挂多... 终于清楚!智星菠萝德州辅助挂多功能透视工具,真是真的是有挂(有挂工具)1、智星菠萝德州模拟器是什么优...
今日头条!AAPoKer辅助挂... 今日头条!AAPoKer辅助挂多功能透视工具,果然是有挂(有挂规律)1、每一步都需要思考,不同水平的...