3 回答

TA貢獻1784條經(jīng)驗 獲得超9個贊
使用 java-8,您可以在一行中使用以下所有內(nèi)容:
Map<String, List<Integer>> collect1 = Arrays.stream(students).collect(Collectors.groupingBy(arr -> arr[0], Collectors.mapping(arr -> Integer.parseInt(arr[1]), Collectors.toList())));
在這里,我們按學生姓名的第 0 個索引分組,第 1 個索引將保存學生的分數(shù)。

TA貢獻1946條經(jīng)驗 獲得超3個贊
您需要區(qū)分已經(jīng)存在的和新的數(shù)組:
List<Integer> currScore = map.get(students[i][0])
if (currScore != null) {
currScore.add(students[i][1]);
} else {
List<Integer> newScore = new ArrayList<>();
newScore.add(students[i][1]);
map.put(students[i][0], newScore);
}
還將變量名稱更改為有意義的名稱

TA貢獻1817條經(jīng)驗 獲得超6個贊
String[][] students = { { "Bobby", "87" }, { "Charles", "100" }, { "Eric", "64" }, { "Charles", "22" } };
Map<String, List<Integer>> map = new HashMap<>();
Stream.of(students).forEach(student -> map.computeIfAbsent(student[0], s -> new ArrayList<>()).add(Integer.parseInt(student[1])));
添加回答
舉報