Умный способ решить вашу проблему - использовать потоки Java:
final String[] courseDesc = {"Computer Science", "Engineering", "Dentistry", "Architecture", "Computer Science", "Dentistry"};
final int[] courseCount = {15, 20, 10, 11, 25, 7};
Map<String, Integer> summaryReport = IntStream.range(0, courseDesc.length).boxed()
.collect(Collectors.toMap(
index -> courseDesc[index], index -> courseCount[index],
(count0, count1) -> count0 + count1, LinkedHashMap::new
));
Это создает карту с курсом в качестве ключа и суммой в качестве значения.Если карта содержит курс и этот же курс собирается снова, лямбда-выражение (count0, count1) -> count0 + count1
обрабатывает его путем суммирования значений.LinkedHashMap::new
- для поддержания порядка.
Теперь вы можете распечатать сводку следующим образом:
summaryReport.forEach((course, count) -> System.out.println(course + " - " + count));
Результат:
Computer Science - 40
Engineering - 20
Dentistry - 17
Architecture - 11