1、使用forEach实现
通过遍历Map
中的每个List<String>
,将每个元素转换为整数并累加到累加器中。
import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, List<String>> map = Map.of( "key1", List.of("1", "2", "3"), "key2", List.of("4", "5", "6") ); int sum = 0; for (List<String> list : map.values()) { for (String str : list) { sum += Integer.parseInt(str); } } System.out.println("Sum: " + sum); // 输出: Sum: 21 } }
2、使用collect()实现
使用 stream()
和 Collectors.toMap()
来计算每个产品和订单的分数总和。
import java.util.*; import java.util.Map.Entry; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { // 输入示例 Map<String, List<String>> inputMap = new HashMap<>(); inputMap.put("product", Arrays.asList("132377", "2123232", "312335678", "423432", "5215566")); inputMap.put("order", Arrays.asList("3174252", "1468453", "1264543", "35723112", "235775645")); // 计算每个列表的总分数 Map<String, Double> finalResult = inputMap.entrySet() .stream() .collect(Collectors.toMap( Entry::getKey, e -> e.getValue() .stream() .mapToDouble(Main::computeScore) .sum() )); // 输出结果 System.out.println("Final Result: " + finalResult); } // 示例计算分数的方法 private static double computeScore(String str) { // 在这里根据你的逻辑计算分数 // 示例:将字符串转换为数字并取其平方根作为分数 return Math.sqrt(Double.parseDouble(str)); } }
或
import java.util.*; import java.util.Map.Entry; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { // 示例输入数据 Map<String, List<String>> inputMap = new HashMap<>(); inputMap.put("product", Arrays.asList("132377", "2123232", "312335678", "423432", "5215566")); inputMap.put("order", Arrays.asList("3174252", "1468453", "1264543", "35723112", "235775645")); // 使用流操作进行分数计算和收集 Map<String, Double> finalResult = inputMap.entrySet() .stream() .map(entry -> new AbstractMap.SimpleEntry<>( entry.getKey(), entry.getValue().stream() .mapToDouble(Main::computeScore) .sum() )) .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); // 输出结果 System.out.println("Final Result: " + finalResult); } // 示例分数计算方法 private static double computeScore(String str) { // 假设:将字符串转换为数字并取平方根作为分数 return Math.sqrt(Double.parseDouble(str)); } }
3、使用mapToInt和sum
通过将List<String>
中的每个元素转换为整数,然后使用mapToInt
和sum
方法来求和。
import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, List<String>> map = Map.of( "key1", List.of("1", "2", "3"), "key2", List.of("4", "5", "6") ); int sum = map.values().stream() .flatMap(List::stream) .mapToInt(Integer::parseInt) .sum(); System.out.println("Sum: " + sum); // 输出: Sum: 21 } }
4、使用reduce
通过将List<String>
中的每个元素转换为整数,然后使用reduce
方法来求和。
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, List<String>> map = Map.of(
"key1", List.of("1", "2", "3"),
"key2", List.of("4", "5", "6")
);
int sum = map.values().stream()
.flatMap(List::stream)
.map(Integer::parseInt)
.reduce(0, Integer::sum);
System.out.println("Sum: " + sum); // 输出: Sum: 21
}
}