比较一个List集合里是否有重复的值

本文介绍了一种高效的方法来检查并移除列表中的重复元素,包括一种优化算法和传统的实现方式,旨在提高数据处理效率。
/**
 * 比较一个list集合里是否有重复的值(如果有删除重复值)
 * */
//最优法
public static boolean isRepeat(List<Object> list) {
	Set<Object> set = new HashSet<Object>(list.size());
	set.addAll(list);
	if (set.size() != list.size())
		return true;
	return false;
}
//一般法
public static boolean isRepeat2(List<Object> list) {
	for (int i = 0; i < list.size(); i++) {
		for (int j = i + 1; j < list.size(); j++) {
			if (list.get(i).equals(list.get(j)))
				return true;
		}
	}
	return false;
}

 

在Java中,如果你有一个`List<T>`对象,其中`T`是一个包含某个属性(比如`String`或自定义对象),你可以通过几种方式来检查这个属性是否存在重复1. 使用Set集合:Set不允许有重复元素,所以你可以将List转换为Set,如果大小不变,说明没有重复。示例: ```java Set<String> uniqueValues = new HashSet<>(list.stream().map(t -> t.getAttribute()).collect(Collectors.toList())); if (uniqueValues.size() == list.size()) { System.out.println("没有重复"); } else { System.out.println("存在重复"); } ``` 在这,`getAttribute()`是你获取属性的方法。 2. 利用Java 8的Stream API:可以直接过滤并计数重复项,然后比较原列表长度和去重后的长度。 ```java int duplicatesCount = Stream.of(list) .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) .values() .stream() .filter(count -> count > 1) .count(); if (duplicatesCount == 0) { System.out.println("没有重复"); } else { System.out.println("存在" + duplicatesCount + "个重复"); } ``` 3. 使用传统的遍历方法:遍历整个列表,记录已经遇到过的属性,并比较它们的数量。 ```java Map<String, Integer> attributeCount = new HashMap<>(); for (T item : list) { String attr = item.getAttribute(); if (!attributeCount.containsKey(attr)) { attributeCount.put(attr, 1); } else { attributeCount.put(attr, attributeCount.get(attr) + 1); if (attributeCount.get(attr) > 1) { // 找到了重复 } } } // 检查是否存在重复 boolean hasDuplicates = attributeCount.values().stream().anyMatch(value -> value > 1); if (!hasDuplicates) { System.out.println("没有重复"); } else { System.out.println("存在重复"); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值