2015-01-13 3 views
0

У меня есть HashMap и файл свойств, который содержит ключ/значения. Файл свойств хранит ключи/значения в этом формате «4,5 = 2» Я построил метод, который загружает свойства из файла, и ставит пару «ключей/значений» в массив HashMap (String, Integer). Но моя проблема в том, что я хочу, чтобы каждый элемент ключей хранился как int, чтобы использовать их в качестве параметров для другого метода. Ключи хранятся в виде строки. Любая помощь будет оценена по достоинству. Спасибо!Преобразование ключей HashMap из String в int

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

Сделайте преобразование при вызове этого * другой * способ. –

+0

Разве вы не можете просто разобрать ключ на целое, как вы это делали для значения ??? –

+1

Я согласен с @AlessandroSantini. Почему вы объявили 'HashMap ', если вам действительно нужен 'HashMap '? –

ответ

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


} 
+0

Я попробую это, и я скажу, работает ли это для меня. Во всяком случае, хорошая идея! – XhensB

0

просто разделить ключ-гирлянда «»

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

Ключ имеет пару целых чисел, а HashMap хранит 2 объекта. Добавлено значение, там будут три объекта, и это приведет меня к ошибке. – XhensB