Как получить доступ к данным словаря в Arraylist в Java? - PullRequest
1 голос
/ 07 марта 2012

Я создаю словарь и ArrayList, как этот.

Dictionary testDict, testDict2 = null;
ArrayList al = new ArrayList();

testDict.put ("key1", dataVar1);
testDict.put ("key2", dataVar2);
testDict2.put ("key1", dataVar1);
testDict2.put ("key2", dataVar2);

al.add(testDict);
al.add(testDict2);

Теперь моя проблема здесь, как я могу получить доступ к данным в словарях?Как, например, как мне получить key1 из testDict, используя al?

Заранее большое спасибо:)

Ответы [ 4 ]

2 голосов
/ 07 марта 2012

Как вы можете прочитать в Java Docs , все объекты Dictionary (обратите внимание, что, например, Hashtable является одним из них) имеют метод Object get(Object key) для доступа к его элементам. В вашем примере вы можете получить доступ к значению записи key1 в textDict следующим образом:

// first access testDict at index 0 in the ArrayList al 
// and then it's element with key "key1"
al.get(0).get("key1");

Обратите внимание, что вы нигде не инициализируете свои объекты Dictionary и что класс Dictionary является абстрактным. Таким образом, вы можете, например, использовать Hashtable (или если вам не нужен синхронизированный доступ, используйте вместо этого более быстрый HashMap) для таких целей, как это:

testDict = new Hashtable<String, String>();

И убедитесь, что вы используете правильные универсальные типы (второй должен быть типом, который есть у ваших dataVar)

2 голосов
/ 07 марта 2012

Может быть, это:

al.get(0).get("key1");
2 голосов
/ 07 марта 2012

Поскольку testDict находится в позиции 0 (первый элемент вашего ArrayList), вы можете получить его с помощью get(0)..

Пример:

Dictionary firstDict = (Dictionary) al.get(0);
Object key1Data = firstDict.get("key1");  

PS: Дженерики могут значительно улучшить ваш код, если вам разрешено его использовать.

Другой момент ... Почему Dictionary, а не Карта ?

0 голосов
/ 07 марта 2012

Не знаю, почему вы хотите, чтобы ваши словари были такими, но вы можете просто перебирать свои словари.

public Data getData(String key) {
    for(Dictionary dict : al) {
        Data result = dict.get(key);
        if(result != null)
            return result;
        }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...