行业资讯 2025年08月6日
0 收藏 0 点赞 546 浏览 2069 个字
摘要 :

文章目录 1.使用Stream和Map 2.使用流(Stream)和集合(Set) 3.结论 学习如何使用Java中的流(Streams)、集合框架中的Map和Set等技术来查找、计数和移除数组中的所有重……




  • 1.使用Stream和Map
  • 2.使用流(Stream)和集合(Set)
  • 3.结论

学习如何使用Java中的流(Streams)、集合框架中的Map和Set等技术来查找计数移除数组中的所有重复元素

我们将使用以下整数值数组。对于其他数据类型,逻辑保持不变。

1.使用Stream和Map

Stream API提供了从任何集合或数组中处理元素的出色方式。我们可以创建一个Map,将所有不同的元素作为Map的键,它们在数组中出现的次数作为Map的值。

Map<Integer, Long> map = Arrays.stream(numArray)
        .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));  //{1=2, 2=1, 3=2, 4=1, 5=2}

我们也可以遍历数组元素,并创建一个类似的Map映射。

Map<Integer, Long> map = new HashMap<>();
for (int i : numArray) {
  if (map.containsKey(i)) { //该元素已经在map中
    map.put(i, map.get(i) + 1);
  } else { //找到一个新元素
    map.put(i, 1L);
  }
}

现在我们可以使用 Map 键和值来计算重复项,甚至可以将重复和唯一元素收集到一个新数组中。

long duplicateCount = map.keySet()
  .stream()
  .filter(k -> map.get(k) > 1)
  .collect(Collectors.counting());
System.out.println(\"重复元素计数 : \" + duplicateCount);
Integer[] duplicateElementsArray = map.keySet()
  .stream()
  .filter(k -> map.get(k) > 1)
  .toArray(Integer[]::new);
System.out.println(\"数组中重复元素 : \" + Arrays.toString(duplicateElementsArray)); 
Integer[] uniqueElementsArray = map.keySet() .stream() .filter(k -> map.get(k) == 1) .toArray(Integer[]::new); 
System.out.println(\"数组中唯一元素 : \" + Arrays.toString(uniqueElementsArray)); 

程序输出:

重复元素计数 : 3 
数组中重复元素 : [1, 3, 5] 
数组中唯一元素 : [2, 4] 

2.使用流(Stream)和集合(Set)

Java中的Set类仅存储不同的元素。我们可以利用这个特性来查找数组中的不同元素,然后使用简单的添加和删除操作来找到唯一和重复的元素。

以下代码尝试将数组中的所有元素添加到HashSet中。对于已经存在于集合中的重复元素,add()操作会返回false。

Integer[] numArray = new Integer[]{1, 2, 3, 4, 5, 1, 3, 5};
Set<Integer> distinctElementsSet = new HashSet<>();
Integer[] duplicateElementsArray = Arrays.stream(numArray)
    .filter(e -> !distinctElementsSet.add(e))
    .toArray(Integer[]::new);
System.out.println(\"Duplicate elements in the array : \" + Arrays.toString(duplicateElementsArray));  //1, 3, 5]
int duplicateCount = duplicateElementsArray.length;
System.out.println(\"Count of duplicate elements : \" + duplicateCount);   //3

使用Java的Set类确实是一种有效的方法来查找数组中的唯一元素和重复元素。

distinctElementsSet.removeAll(Arrays.asList(duplicateElementsArray));
Integer[] uniqueElementsArray = distinctElementsSet.toArray(Integer[]::new);
System.out.println(\"Unique elements in the array : \" + Arrays.toString(uniqueElementsArray));  //[2, 4]

3.结论

在这个简短的Java教程中,我们学习了两种不同的方法来查找和计算Java数组中的重复元素。我们还学会了将重复元素和唯一元素收集并打印到一个新数组中。如果您有任何关于这个主题或其他Java方面的问题,请评论留言。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9282.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号