将所有字母字符加载到哈希图的快速方法



例如,我有这个哈希图:

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));

相关内容

  • 没有找到相关文章