一、根据对象中属性去重
/** * java8 list<java bean>去重 */ @Test public void listRemoveDuplication() { List<User> users = new ArrayList<>(); users.add(new User(1L, "aa", "aa")); users.add(new User(1L, "aa", "bb")); users.add(new User(1L, "aa", "cc")); users = users.stream().collect( collectingAndThen( toCollection( () -> new TreeSet<>(Comparator.comparing(User::getId))), ArrayList::new ) ); for (User user : users) { System.out.println(user); } }
二、根据对象中多个属性去重
/** * java8 list<java bean> 根据多个bean属性去重 * 根据属性id和pwd去重,满足id和pwd都一致时,视为相同属性 */ @Test public void listRemoveDuplication2() { List<User> users = new ArrayList<>(); users.add(new User(1L, "aa", "aa")); users.add(new User(1L, "aa", "bb")); users.add(new User(1L, "aa", "cc")); users = users.stream().collect( Collectors.collectingAndThen( Collectors.toCollection( () -> new TreeSet<>( Comparator.comparing( o -> o.getId() + ";" + o.getPwd() ) ) ), ArrayList::new ) ); for (User user : users) { System.out.println(user); } }
三、java8 去除重复字符串
/** * java8 list<String> 去除重复的string */ @Test public void stringRemoveDuplication() { List<String> strings = new ArrayList<>(); strings.add("aa"); strings.add("aa"); strings.add("bb"); strings.add("cc"); strings = strings.stream().distinct().collect(Collectors.toList()); for (String str : strings) { System.out.println(str); } }