2015-05-14 3 views
0

Например, у меня есть Hashtable, и у меня есть значение в переменной Double d = 99.22. Здесь я хочу получить или найти ключ, связанный с этим значением.Как перечислить ключ hashtable от определенного значения

Hashtable<String, Double> balance = new Hashtable<String, Double>(); 

     balance.put("Zara", new Double(3434.34)); 
     balance.put("Mahnaz", new Double(123.22)); 
     balance.put("Ayan", new Double(1378.00)); 
     balance.put("Daisy", new Double(99.22)); 
     balance.put("Qadir", new Double(-19.08)); 

     System.out.println(balance); 

     Double d = 99.22; 

Заранее спасибо

+0

Во-первых, вам нужно перебирать хэш-таблицу с помощью цикла. – ryekayo

+1

Вам в основном нужно перебирать все записи ... это не подходит для «Hashtable», поскольку вы ищете по записи, а не по ключу. (Любая причина, по которой вы используете 'Hashtable', а не' HashMap', btw?). В стороне, лучше не использовать 'double' /' Double' для значений валюты - предпочитаете 'BigDecimal' или целое число центов/пенсов/что угодно. –

ответ

1
Hashtable<String, Double> balance = new Hashtable<String, Double>(); 

     balance.put("Zara", new Double(3434.34)); 
     balance.put("Mahnaz", new Double(123.22)); 
     balance.put("Ayan", new Double(1378.00)); 
     balance.put("Daisy", new Double(99.22)); 
     balance.put("Qadir", new Double(-19.08)); 

     System.out.println(balance); 
     Double d = 99.22; 



    String key=null; 
     for(Map.Entry entry: balance.entrySet()){ 
      if(d.equals(entry.getValue())){ 
       key = (String) entry.getKey(); 
       break; 
      } 
     } 
     System.out.println("got key from value in hashtable key: "+ key +" value: " + d);  

Я надеюсь, что это будет полезно.

+0

Почему бы вам не параметризовать запись? –

+0

Поскольку я хочу использовать метод entry.getValue(), поэтому я использовал интерфейс ввода –

+0

Я имею в виду использование 'Entry ' для пропуска кастинга. –

0

Попробуйте этот код после фрагмента коды вы упомянули в посте:

for(Map.Entry<String, Double> e : balance.entrySet()){ 
 
     if(e.getValue()== d.doubleValue()){ 
 
      System.out.println(e.getKey()); 
 
     } 
 
    }

+0

'for (Entry e: balance.entrySet())' намного лучше –

Смежные вопросы