HashMapскопируйте все ключи в HashMapи инициализировать значения до нуля - PullRequest
6 голосов
/ 11 ноября 2010

Какой самый лучший способ?

Просто перебираем и ставим ключ и ноль, или есть другой более элегантный или существующий метод библиотеки.Я также использую Java-библиотеку гуавы от Google, если она имеет какую-либо полезную функциональность?

Хотел проверить, было ли что-нибудь похожее на метод копирования для списков или метод Map * * * * * * *ключи.

Ответы [ 3 ]

20 голосов
/ 11 ноября 2010

Не думайте, что здесь есть что-то необычное:

Map<String, Boolean> map = ...;
Map<String, Integer> newMap = Maps.newHashMapWithExpectedSize(map.size());
for (String key : map.keySet()) {
  newMap.put(key, 0);
}

Если вы хотите что-то необычное с Гуавой, есть опция:

Map<String, Integer> newMap = Maps.newHashMap(
    Maps.transformValues(map, Functions.constant(0)));

// 1-liner with static imports!
Map<String, Integer> newMap = newHashMap(transformValues(map, constant(0)));
3 голосов
/ 11 ноября 2010

Цикл довольно прост (и не лишен элегантности). Переберите ключи оригинала Map и поместите их в новую копию со значением ноль.

Set<String> keys = original.keySet();
Map<String, Integer> copy = new HashMap<String, Integer>();
for(String key : keys) {
    copy.put(key, 0);
}

Надеюсь, это поможет.

1 голос
/ 11 ноября 2010
final Integer ZERO = 0;

for(String s : input.keySet()){
   output.put(s, ZERO);
}
...