JAVA 对象整体去重+按照对象内某个属性去重

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 具体看 常用在对象元素排序中
-----Comparator.comparing ---- comparing是比较器功能接口的静态方法。 Comparator.comparing方法在Java 8中被引入。 Comparator.comparing接受一个函数,该函数从给定类型中提取一个可比较的排序键(lambda形式的键),并返回一个通过该排序键进行比较的比较器。 思路: 先使用Comparator.comparing 对对象元素排序,然后将返回的迭代器对象给TreeSet,进行去重操作 代码 public static List<Category> toDistinctList(List<Category> list) { //标签对象,根据标签名去除重复值 Set<Category> Set1 = new TreeSet<>(Comparator.comparing(Category::getCategoryName)); Set1.addAll(list); list.clear(); list.addAll(Set1); return list; } 测试 @Test public void toDistinctList() { List<Category> 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<Category> categories = AdminBlogBo.toDistinctList(list); System.out.println(categories); }
2对象整体去重 也是使用java8的新特性 public static List<Category> toDistinctList(List<Category> list) { list = list .stream() .distinct() .collect(Collectors.toList()); return list; 测试 @Test public void toDistinctList() { List<Category> 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<Category> 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=)]
经验分享 程序员 微信小程序 职场和发展