例如,我有这个哈希图:
Map<String,Integer> map = new HashMap<>();
与其做map.put("A",0)
,map.put("B",0)
...直到map.put("C",0)
,有什么办法可以让它变得快吗?
在循环中执行此操作:
for (char ch = 'A'; ch <= 'Z'; ++ch)
map.put(String.valueOf(ch), 0);
使用双大括号初始化。它非常紧凑,有助于初始化集合。
Map<String, Integer> map = new HashMap<String, Integer>() {
{
for (char ch = 'A'; ch <= 'Z'; ++ch)
put(String.valueOf(ch), 0);
}
};
请注意,在没有映射引用的情况下调用 - put 方法。
试试这个:
Map<String,Integer> map = new HashMap<>();
for (int i = 65; i <= 90; i++) {
map.put(Character.toString((char) i), 0);
}
with io.vavr
public HashMap<String,Integer> alphanumericAlphabet() {
return CharSeq
.rangeClosed('0','9')
.appendAll(CharSeq.rangeClosed('a','z'))
.appendAll(CharSeq.rangeClosed('A','Z'))
.map(character ->Tuple.of(
character.toString(),
Character.getNumericValue(character)
))
.collect(HashMap.collector());
}
使用IntStream
将字符添加到地图中:
IntStream.rangeClosed((int) 'a', (int) 'z').forEach(ch -> map.put((char) ch, 0));