您好,我需要使用以下条件构建Map:我有 List<Integer> = Arrays.of(1,2,3,4,5,6,7,8,9); 我的输出应该是 Map<Integer,Integer> 这样Map的键应该是偶数之和=2+4+6+8=20Map的值应该是奇数之和=1+3+5+7+9=25我的输出应该是key=20和value=25。我需要使用java8。
List<Integer> = Arrays.of(1,2,3,4,5,6,7,8,9);
Map<Integer,Integer>
olhwl3o21#
你可以这样做:
import java.util.Map; import java.util.List; class Main { public static void main(String[] args) { final List<Integer> values = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9); int sumOdd = 0; int sumEven = 0; for (int value : values) { if (value % 2 == 0) { sumEven += value; } else { sumOdd += value; } } final Map<Integer, Integer> result = Map.of(sumOdd, sumEven); System.out.println(result); // Outputs {20=25} } }
您也可以使用java streams,但这将在列表上迭代两次:
import java.util.Map; import java.util.List; import java.util.stream.Stream; import java.util.stream.Collectors; class Main { public static void main(String[] args) { final List<Integer> values = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9); final int sumOdd = values.stream() .filter(v -> v % 2 != 0) .collect(Collectors.summingInt(Integer::intValue)); final int sumEven = values.stream() .filter(v -> v % 2 == 0) .collect(Collectors.summingInt(Integer::intValue)); final Map<Integer, Integer> result = Map.of(sumEven, sumOdd); System.out.println(result); // Outputs {20=25} } }
1条答案
按热度按时间olhwl3o21#
你可以这样做:
您也可以使用java streams,但这将在列表上迭代两次: