将HashMap键从String转换为int

时间:2015-01-13 00:11:19

标签: java

我有一个HashMap和一个包含键/值的属性文件。 属性文件以“4,5 = 2”格式存储键/值 我已经构建了一个从文件加载属性的方法,它将“keys / value”对放入HashMap数组(String,Integer)。但我的问题是我希望将每个键元素存储为int,以便将它们用作另一个方法的参数。密钥存储为String。 任何帮助,将不胜感激。谢谢!

public static HashMap<String, Integer> hashMap = new HashMap<>();

prop.load(input);
Enumeration<?> e = prop.propertyNames();
    while (e.hasMoreElements()) {
           key = (String) e.nextElement();
           intValue=Integer.parseInt(prop.getProperty(key));
           hashMap.put(key, intValue);

2 个答案:

答案 0 :(得分:0)

将key-String拆分为“,”

public static HashMap<String, Integer> hashMap = new HashMap<>();

prop.load(input);
Enumeration<?> e = prop.propertyNames();
while (e.hasMoreElements()) {
       String sKey = (String) e.nextElement();
       intValue = Integer.parseInt(prop.getProperty(sKey));
       String[] keys = sKey.split(",");
       for(String key: keys)
            hashMap.put(key, intValue);

答案 1 :(得分:0)

由于您的键似乎是一对整数,因此您需要将Pair类用作键。然后只需访问getFirst()或getSecond()以与其他api一起使用。

public class IntPair {
    private final int first;
    private final int second;

    public IntPair(int first, int second) {
        this.first = first;
        this.second = second;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 89 * hash + this.first;
        hash = 89 * hash + this.second;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final IntPair other = (IntPair) obj;
        if (this.first != other.first) {
            return false;
        }
        if (this.second != other.second) {
            return false;
        }
        return true;
    }

    public int getFirst() {
        return first;
    }

    public int getSecond() {
        return second;
    }


}