用HashMap在Java中比较带有整数键的关键项

huangapple go评论75阅读模式
英文:

Comparing Key items with an integer using Hasmap in Java

问题

public class Translate {
    
    Map<Integer, String> map = new HashMap<>();
    private int number;

    {
        map.put(0, "zero");
        map.put(1, "one");
        map.put(2, "two");
        map.put(3, "three");
        map.put(4, "four");
        map.put(5, "five");
        map.put(6, "six");
        map.put(7, "seven");
        map.put(8, "eight");
        map.put(9, "nine");
    }

    public Translate(int number) {
        this.number = number;
    }

    // This is where I'm stuck. I need to compare the Key item to see if it's equal to the integer that is in the Translate constructor.
    public String convertToString() {
        if (map.containsKey(number)) {
            return map.get(number);
        }
        return "";
    }
}
英文:

I'm trying to compare the Key item to see if is equal to the integer that is in the Translate constructor. But someone I can't really figure it out. Sorry for the mess and I' still fairly new to Java. Thanks

public class Translate {
    
        Map&lt;Integer, String&gt; map = new HashMap&lt;&gt;();
        private int number;

        map.put(0, &quot;zero&quot;);
        map.put(1, &quot;one&quot;);
        map.put(2, &quot;two&quot;);
        map.put(3, &quot;three&quot;);
        map.put(4, &quot;four&quot;);
        map.put(5, &quot;five&quot;);
        map.put(6, &quot;six&quot;);
        map.put(7, &quot;seven&quot;);
        map.put(8, &quot;eight&quot;);
        map.put(9, &quot;nine&quot;);
    
        public Translate(int number) {
            this.number = number;
        }
    
        //this is where I&#39;m stuck. I need to compare the Key item to see if is it equal to the integer that is in the Translate constructor. 
        public String convertToString() {
            if (map.get(number) == this.number) {
            };
        }
    }

答案1

得分: 2

你可以尝试类似这样的写法

    import java.util.*;
    
    public class Translate {
        
        private static Map<Integer, String> map;
        
        static {
            map = new HashMap<>();
            map.put(0, "zero");
            map.put(1, "one");
            map.put(2, "two");
            map.put(3, "three");
            map.put(4, "four");
            map.put(5, "five");
            map.put(6, "six");
            map.put(7, "seven");
            map.put(8, "eight");
            map.put(9, "nine");
        }
            
        private int number;
        
        public Translate(int number) {
            this.number = number;
        }
        
        public String convertToString() {
            if (map.containsKey(this.number)) {
                return map.get(this.number);
            }
            return null;
        }
        
        public static void main(String[] args) {
            Translate t = new Translate(7);
            System.out.println(t.convertToString());
        }
    }
英文:

You have to try something like this:

import java.util.*;

public class Translate {
    
    private static Map&lt;Integer, String&gt; map;
    
    static {
        map = new HashMap&lt;&gt;();
        map.put(0, &quot;zero&quot;);
        map.put(1, &quot;one&quot;);
        map.put(2, &quot;two&quot;);
        map.put(3, &quot;three&quot;);
        map.put(4, &quot;four&quot;);
        map.put(5, &quot;five&quot;);
        map.put(6, &quot;six&quot;);
        map.put(7, &quot;seven&quot;);
        map.put(8, &quot;eight&quot;);
        map.put(9, &quot;nine&quot;);
    }
        
    private int number;
    
    public Translate(int number) {
        this.number = number;
    }
    
    public String convertToString() {
        if (map.containsKey(this.number)) {
            return map.get(this.number);
        }
        return null;
    }
    
    public static void main(String[] args) {
        Translate t = new Translate(7);
        System.out.println(t.convertToString());
    }
}

答案2

得分: 1

我不是 Java 的专家,但以下是我发现有问题的部分:

  1. 如果 (map.get(number).equals(this.number)) <--- 这里你正在获取值,而不是键。

    而应该使用 map.contains() 进行检查,如果返回为 true,则返回你传入的键的值。

  2. 你永远不应该使用 "==" 来比较对象,而应该使用该集合的 .equals() 方法,如果有的话。

PS:如果我写错了什么内容,欢迎提供反馈。

英文:

I'm not the expert on java but here is what i found troublesome

if (map.get(number).equals(this.number)) <--- 1.you are fetching the value not the key in this.

Instead check with map.contains() , if returned true by it, return the value of the key you passed.

  1. You should never compare objects with "==" but should instead use .equals() method of that collection , if it is there.

PS: Open for feedback if I wrote something wrong

答案3

得分: 0

public String convertToString() {
  // 只需要判断映射中是否包含这个键,可以使用 containsKey 方法
  if (map.containsKey(this.number)) {
    // 进行其他你想要的操作
  }
}

或者,如果你要在映射中存在值的情况下使用该值,可以省略 containsKey 直接使用 get

public String convertToString() {
  // 返回映射中键为 this.number 的值,如果不存在则返回一个提示信息
  return map.getOrDefault(this.number, "找不到 " + this.number + "!");
}
英文:
public String convertToString() {
  // You just need to see if the map contains this key, so you can use containsKey
  if (map.containsKey(this.number)) {
    // Do whatever else you want to do
  }
}

Alternatively, if you will use the value in the map if it exists, you can skip the containsKey and just go straight to get

public String convertToString() {
  // Return either the value in the map with key of this.number, or a message that 
  // indicates that no value is present
  return map.getOrDefault(this.number, &quot;Couldn&#39;t find &quot; + this.number + &quot;!&quot;);
}

答案4

得分: 0

你应该首先调用Translate方法并传入任何值。或者,你可以给数字赋予默认值,比如 int number = 5;

然后你可以使用以下代码块:

public String convertToString() {
    if (map.containsKey(this.number)) {
        return map.get(this.number);
    }
    return null;
}

接着,打印该值:System.out.println(t.convertToString());

英文:

You should call Translate method with any value at first. Or, you can give default value to number, such as int number =5;

Then you can use

public String convertToString() {
    if (map.containsKey(this.number)) {
        return map.get(this.number);
    }
    return null;
} method.

Then, print the value System.out.println(t.convertToString());

答案5

得分: 0

请尝试以下代码:

public class Translate {

    private int number;

    Map<Integer, String> map = Map.of(0, "zero", 1, "one", 2, "two", 3, "three", 4, "four", 5, "five", 6, "six", 7, "seven", 8, "eight", 9, "nine");

    public Translate(int number) {
        this.number = number;
    }

    public String convertToString() {
        return map.get(number);  // 如果没有对应的条目,将返回null
    }
}

以上代码如果没有对应的条目,将返回null。或者,您也可以直接返回数字本身:

public String convertToString() {
    return map.getOrDefault(number, Integer.toString(number));
}

如果您想要严格一些,可以在构造函数中针对无效的数字抛出异常:

public Translate(int number) {
    if (!map.containsKey(number)) {
        throw new IllegalArgumentException("number must be 0-9");
    }
    this.number = number;
}
英文:

Try this:

public class Translate {

    private int number;

    Map&lt;Integer, String&gt; map = Map.of(0, &quot;zero&quot;, 1, &quot;one&quot;, 2, &quot;two&quot;, 3, &quot;three&quot;, 4, &quot;four&quot;, 5, &quot;five&quot;, 6, &quot;six&quot;, 7, &quot;seven&quot;, 8, &quot;eight&quot;, 9, &quot;nine&quot;);

    public Translate(int number) {
        this.number = number;
    }

    public String convertToString() {
        return map.get(number);  // returns null if there&#39;s no entry
    }
}

Theabove code rerurns null if there's no entry for the number. Alternatively, you could just return the number itself.

public String convertToString() {
    return map.getOrDefault(number, Integer.toString(number));
}

If you wanted to be strict, you could throw an exception if an invalid number is passed to the constructor:

public Translate(int number) {
    if (!map.containsKey(number)) {
        throw new IllegalArgumentException(&quot;number must be 0-9&quot;);
    }
    this.number = number;
}

huangapple
  • 本文由 发表于 2020年8月31日 12:36:59
  • 转载请务必保留本文链接:https://go.coder-hub.com/63664859.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定