2010-02-23 3 views
0

Как я могу реализовать дженерики в этой программе, так что я не бросать в строку в этой строке:Java Дженерики Вопрос

String d = (String) h.get ("Dave"); 






import java.util.*; 

public class TestHashTable { 


    public static void main (String[] argv) 
    { 
    Hashtable h = new Hashtable(); 

    // Insert a string and a key. 
    h.put ("Ali", "Anorexic Ali"); 
    h.put ("Bill", "Bulimic Bill"); 
    h.put ("Chen", "Cadaverous Chen"); 
    h.put ("Dave", "Dyspeptic Dave"); 

    String d = (String) h.get ("Dave"); 
    System.out.println (d); // Prints "Dyspeptic Dave" 
    } 

} 

ответ

12

Вы можете использовать Hashtable, но его использование не рекомендуется в пользу Map и HashMap:

public static void main (String[] argv) { 
    Map<String, String> h = new HashMap<String, String>(); 

    // Insert a string and a key. 
    h.put("Ali", "Anorexic Ali"); 
    h.put("Bill", "Bulimic Bill"); 
    h.put("Chen", "Cadaverous Chen"); 
    h.put("Dave", "Dyspeptic Dave"); 

    String d = h.get("Dave"); 
    System.out.println (d); // Prints "Dyspeptic Dave" 
} 

Вы могли бы заменить декларацию с:

Map<String, String> h = new Hashtable<String, String>(); 

Как правило, вы хотите использовать интерфейсы для объявлений переменных, деклараций параметров и типов возвращаемых данных по конкретным классам, если это опция.

+1

+1 для рекомендации использования интерфейсов для объявлений переменных и возвращаемых типов, где возможно. – Everyone

+0

Используйте 'Collections.synchronizedMap (новый HashMap <...>())' вместо хеш-таблицы. – KitsuneYMG

1
Hashtable<String,String> h = new Hashtable<String,String>(); 
+0

Не уверен, что это сработает - HashTable не использует Generics. – Tom

+0

Hashtable обобщен как 'Hashtable '. http://java.sun.com/javase/6/docs/api/java/util/Hashtable.html – polygenelubricants

+0

Моя ошибка - я искал неправильные документы. – Tom

0

Вы также можете использовать ConcurrentHashMap, который, как и HashTable, является потокобезопасным, но вы также можете использовать «общую» или параметризованную форму.

Map<String, String> myMap = new 
    ConcurrentHashMap<String,String>(); 
Смежные вопросы