Java List集合去重新方法

本文介绍了在Java中如何对List进行去重操作,包括对字符串List和对象List的去重,并详细展示了针对对象List中不同属性的多种去重方法。

在业务逻辑越来越复杂的当前,去重是业务逻辑也很多,下面介绍几种
List(字符串)去重

List<String> collect = list.stream().distinct().collect(Collectors.toList());

List(对象),去重其属性一,单一属性,下面还有去多属性
推荐:速度比接下来的快

List<对象> quchong = data.stream().filter(distinctByKey(对象 -> 对象.get属性())).distinct()
				.collect(Collectors.toList());

static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
		Map<Object, Boolean> seen = new ConcurrentHashMap<>();
		return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
	}

List(对象),去重其属性二

List<对象> unique = data.stream()
				.collect(Collectors.collectingAndThen(
						Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(对象::get属性))),
						ArrayList::new));

List(对象),去重其属性二(多属性)

List<对象> uniques = data.stream().collect(Collectors.collectingAndThen(
				Collectors.toCollection(() -> new TreeSet<对象>(
						Comparator.comparing(对象-> 对象.get属性() + ";" + 对象.get属性()))),
				ArrayList::new));
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值