Подсчет количества случаев каждого объекта в списке

Каждый EXE, в котором размещены элементы управления COM или OLE, определяет состояние своей квартиры. Состояние квартиры по умолчанию STA (и для большинства программ должно быть STA).

STA - все элементы управления OLE по необходимости должны находиться в STA. STA означает, что вашим COM-объектом всегда нужно манипулировать в потоке пользовательского интерфейса и нельзя передавать в другие потоки (во многом как любой элемент пользовательского интерфейса в MFC). Однако ваша программа может иметь много потоков.

MTA - Вы можете манипулировать объектом COM в любом потоке вашей программы.

5
задан Michael Myers 29 June 2009 в 16:45
поделиться

6 ответов

Да, я бы использовал Map . Я бы обернул add примерно так:

private static void incrementValue(Map<String, Integer> counters, String toAdd) {
    Integer currValue = counters.get(toAdd);
    if (currValue == null)
        counters.put(toAdd, 1);
    else
        counters.put(toAdd, currValue+1);
}

Или без дженериков:

private static void incrementValue(Map counters, String toAdd) {
    Integer currValue = (Integer) counters.get(toAdd);
    if (currValue == null)
        counters.put(toAdd, 1);
    else
        counters.put(toAdd, currValue+1);
}
5
ответ дан 13 December 2019 в 22:14
поделиться

Поскольку спрашивающий упомянул, что универсальные шаблоны использовать нельзя, поскольку целевой платформой была Java 1.4, можно было использовать Коллекции Apache Commons , которые не используйте дженерики.

В ответе от pjp упоминается, что можно использовать Bag.

Оказывается,

4
ответ дан 13 December 2019 в 22:14
поделиться

Откуда берутся данные? Если db - вы можете сделать это очень легко в запросе на бэкэнде с помощью group by.

1
ответ дан 13 December 2019 в 22:14
поделиться

Карта кажется подходящим вариантом. Прямой доступ :)

Ключ: Элемент значение: количество вхождений или список с индексами элемента в списке.

0
ответ дан 13 December 2019 в 22:14
поделиться

Помимо решений, которые были опубликованы, первое, что приходит мне в голову, - это составить таблицу «код - значение» и закодировать список с помощью кодов. Это было бы очень компактно.

0
ответ дан 13 December 2019 в 22:14
поделиться

Наиболее естественной структурой для этого является Сумка, также известная как Мультимножество.

Сумка - это, по сути, функция от Объекта к Счету.

Коллекции Google имеют Мультонабор, однако вы можете легко создать ваше собственное, используя HashMap.

http://google-collections.googlecode.com/svn/trunk/javadoc/index.html?com/google/common/collect/Multiset.html

0
ответ дан 13 December 2019 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: