zoukankan      html  css  js  c++  java
  • List去重、排序

    package com;
    
    import lombok.Data;
    import lombok.extern.slf4j.Slf4j;
    import org.junit.Test;
    import java.util.*;
    import java.util.stream.Collectors;
    
    @Slf4j
    public class JunitTest{
    //排序 @Test public void sort(){ List<Integer> lists = Arrays.asList(1,1,2,3); // 升序 lists.sort(Comparator.comparing(Integer::intValue)); lists.stream().sorted().collect(Collectors.toList()); // 降序 lists.sort(Comparator.comparing(Integer::intValue).reversed()); lists.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); //集合对象排序 List<User> list = new ArrayList<User>(); list.add(new User(5,"zhagnsan",18)); list.add(new User(4,"libai",19)); list.add(new User(1,"wangwu",22)); list.add(new User(2,"lihua",11)); //根据ID排序-1 list.sort(Comparator.comparing(User::getId)); //根据ID排序-2 Collections.sort(list,new Comparator<User>(){ @Override public int compare(User o1, User o2) { return o1.getId() - o2.getId(); } }); } //去重 @Test public void removal() { //1.使用LinkedHashSet删除arraylist中的重复数据 //删除重复数据 //保持添加到其中的数据的顺序 ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3)); System.out.println(arrayList); LinkedHashSet<Integer> linkedHashSet = new LinkedHashSet<>(arrayList); ArrayList<Integer> integers = new ArrayList<>(linkedHashSet); System.out.println(integers); //2.使用java8新特性stream进行List去重 //java 8 stream api。使用steam的distinct()方法返回一个由不同数据组成的流,通过对象的equals()方法进行比较。 //收集所有区域数据List使用Collectors.toList() arrayList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3)); System.out.println(arrayList); List<Integer> integerList = arrayList.stream().distinct().collect(Collectors.toList()); System.out.println(integerList); //3.用HashSet不能添加重复数据的特性 // 由于HashSet不能保证添加顺序,所以只能作为判断条件保证顺序: arrayList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3)); HashSet<Integer> set = new HashSet<Integer>(arrayList.size()); List<Integer> result = new ArrayList<Integer>(arrayList.size()); for (Integer str : arrayList) { if (set.add(str)) { result.add(str); } } arrayList.clear(); arrayList.addAll(result); //4.用List的contains方法循环遍历,重新排序,只添加一次数据,避免重复 arrayList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3)); List<Integer> integerArrayList = new ArrayList<Integer>(arrayList.size()); for (Integer integer : integerArrayList) { if (!result.contains(integer)) { result.add(integer); } } arrayList.clear(); arrayList.addAll(result); //5.双重for循环去重 arrayList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3)); for (int i = 0; i < arrayList.size(); i++) { for (int j = 0; j < arrayList.size(); j++) { if (i != j && arrayList.get(i) == arrayList.get(j)) { arrayList.remove(arrayList.get(j)); } } } //6.根据年龄的性别去重 List<User> list = new ArrayList<User>(); list.add(new User(5,"zhagnsan",18)); list.add(new User(4,"libai",19)); list.add(new User(1,"wangwu",18)); list.add(new User(2,"lihua",11)); ArrayList<User> collect = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection( () -> new TreeSet<>(Comparator.comparing(User::getAge))), ArrayList::new)); System.out.println(collect); }
    @Data
    class User{ private int id; private String name; private int age; private User(int id,String name,int age){ this.id = id; this.name = name; this.age = age; } } }
  • 相关阅读:
    request.getParameter() 、 request.getInputStream()和request.getReader() 使用体会
    HTTP之Content-Length
    关于spring3中No Session found for current thread!and Transaction的配置和管理(转)
    Java数据类型和MySql数据类型对应一览
    Spring MVC 解读——View,ViewResolver(转)
    LeetCode 441. Arranging Coins
    LeetCode 415. Add Strings
    LeetCode 400. Nth Digit
    LeetCode 367. Valid Perfect Square
    LeetCode 326. Power of Three
  • 原文地址:https://www.cnblogs.com/qinxu/p/14155671.html
Copyright © 2011-2022 走看看