java - HashMap 中的默认值

标签 java hashmap default-value

我有一个无法解决的问题。我想解决Alphametics(例如SEND + MORE = MONEY --> O=0,M=1,Y=2,E=5,N=6,D=7,R=8,S=9)所以我尝试了得出这样的方程: 1000*S+100*E+10*N+D + 1000*M+100*O+10*R+E = 10000*M+1000*O+100*N+ 10*E+Y 所以我尝试使用 HashMap 来收集这些数据(这仅适用于等式的左侧):

Scanner s = new Scanner(System.in);
        int HowMuchWords = s.nextInt();
        String[] Words = new String[HowMuchWords];
        for(int i = 0; i<Words.length;i++){
            Words[i] = s.next().toUpperCase();
        }
        HashMap<Character,Integer> Letters = new HashMap<Character, Integer>();

        for(int i = 0;i<Words.length;i++) {
            char[] LettersWord = Words[i].toCharArray();
            for (int j = 0; j < LettersWord.length; j++) {
                Letters.put(LettersWord[j],Letters.get(LettersWord[j])+(int) Math.pow(10, LettersWord.length - 1 - j));
       }

但是我在使用 Letters.get 命令时遇到问题。因为我要给null加上一个数字,所以Value还是null。所以我想将Hashmap中每个值的默认值设置为0。有可能这样做吗?

最佳答案

到目前为止最简单的方法是编写

Integer r = Letters.get(...);
if (r==null)
    r=0;

而不是乱七八糟地安排你的 map 返回默认值。

或者

int r = Letters.contains(...) ? Letters.get(...) : 0;

也会这么做。

关于java - HashMap 中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26595318/

相关文章:

java - IBrokers - 我如何向 IBrokers::.placeOrder 发送 100000?

java - Elasticsearch 返回没有父对象的嵌套对象

java - 如何对 LinkedHashMap 中的重复键值求和?

html - 如何在 HAML 中为本地人使用默认值?

java - 如何在另一个表中按票数排序?

java 。具有不同哈希值的相同对象

Java Gson 不兼容的类型

java - 在 HashMap Java8 中传递用户定义的合并行为方法

C++ 默认枚举值用法

c++ - 默认成员值最佳实践