Java 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));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值