1. 代码写法: (要求 JDK 1.8 或 1.8 以上)
package gentle.entity;
import lombok.Data;
/**
*
* @author silence
* @date 2018/7/6 10:58
*/
@Data // 此注解可自动生成set/get、自动重写equals/hashcode 等,不用在代码中书写相关代码。
public class User {
private String name;
private int age;
public User( String name, int age) {
this.name = name;
this.age = age;
}
}
/**
* for循环
* @param list
* @param <T>
*/
public static <T> void listFor(List<T> list) {
list.forEach(each -> System.out.print(each+" "));
}
/**
* 按对象属性去重
*
* @return
*/
public static List<User> deleteSameByOne(List<User> users) {
// 1.单个属性去重
return users.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getAge))),
ArrayList::new));
}
/**
* 按对象属性去重
*
* @return
*/
public static List<User> deleteSameByMany(List<User> users) {
// 2.多属性去重:把多个属性拼起来( 本质上还是单属性去重 )
return users.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(userDep -> userDep.getName() + userDep.getAge()))),
ArrayList::new));
}
/**
* 基本数据类型去重
*
* @param list
* @param <T>
* @return
*/
public static <T> List<T> deleteSame(List<T> list) {
return list.stream().distinct().collect(Collectors.toList());
}
2. 测试:
List<User> userList = new ArrayList<User>(){{add(new User("花间",24));}
{add(new User("暮云",28));}
{add(new User("暮云",28));}
{add(new User("彻风",24));}
{add(new User("弥禁",16));}
{add(new User("清寞",24));}};
System.out.println("去掉同龄的:\n"+deleteSameByOne(userList));
System.out.println("去掉同龄且同名的:\n"+deleteSameByMany(userList));
3. 运行结果:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有