Если кто-то получил эту ошибку на веб-сайте WordPress, вам необходимо изменить wp-config db charset:
define('DB_CHARSET', 'utf8mb4_unicode_ci');
вместо:
define('DB_CHARSET', 'utf8mb4');
Из OP я вижу, что вам нужен контейнер значения ключа ассоциации, поэтому наиболее очевидным способом будет использование Map
, проверьте, присутствует ли значение в качестве ключа, если нет - добавьте его с помощью 1
counter если есть - добавьте + 1
:
void test() {
Map<String, Integer> summaryReport = new HashMap<>();
String curDesc = "whatever";
Integer count = summaryReport.get(curDesc);
if (count == null) {
summaryReport.put(curDesc, 1);
} else {
summaryReport.put(curDesc, count + 1);
}
}
Делая более хитрым способом, вы можете использовать изменяемый AtomicInteger
в качестве счетчика:
void test() {
Map<String, AtomicInteger> summaryReport = new HashMap<>();
AtomicInteger counter = summaryReport.putIfAbsent("whatever", new AtomicInteger(0));
if (counter != null) {
counter.incrementAndGet();
}
}
Умным способом решения вашей проблемы было бы использование Java Streams:
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