如何从List的HashSet中取值并计算每个连通树的元素和?
计算连通树集合中元素的总和
嘿,这个需求其实很好实现,咱们直接针对你拿到的List<HashSet>来处理就行。从你的示例输出来看,集合里的元素都是整数类型,那我们可以通过遍历每个集合并累加元素值来得到总和,下面给你两种实用的实现方式:
方式一:传统循环遍历
这种方式适配所有Java版本,逻辑清晰易懂,新手也能快速上手:
// 先获取所有连通树的集合列表 ConnectivityInspector<Integer> s = new ConnectivityInspector<>(graph); List<HashSet<Integer>> connectedSets = s.connectedSets(); // 逐个计算每个连通树的元素总和 for (HashSet<Integer> treeSet : connectedSets) { int totalSum = 0; for (Integer node : treeSet) { totalSum += node; } // 输出每个连通树及其对应的总和 System.out.println("连通树" + treeSet + "的元素总和:" + totalSum); }
方式二:Java 8+ 流API简化写法
如果你的项目使用Java 8及以上版本,用流API可以让代码更简洁优雅:
ConnectivityInspector<Integer> s = new ConnectivityInspector<>(graph); List<HashSet<Integer>> connectedSets = s.connectedSets(); connectedSets.forEach(treeSet -> { // 借助流快速计算集合内元素的总和 int sum = treeSet.stream().mapToInt(Integer::intValue).sum(); System.out.printf("连通树%s的元素总和:%d%n", treeSet, sum); });
小提示
- 如果你的集合元素不是
Integer而是其他数字类型(比如Long),只需要把mapToInt换成对应的mapToLong,并调整求和的变量类型即可。 - 虽然
connectedSets()返回的连通分量一般不会是空集合,但如果需要处理极端情况,可以在计算前加个判断:if (!treeSet.isEmpty())再执行求和逻辑。
内容的提问来源于stack exchange,提问作者zain
相关产品推荐
相关产品推荐

