J2ME получает конкретный объект из вектора - PullRequest
0 голосов
/ 11 июля 2009

В настоящее время я реализую объект постоянного хранения для своего приложения Blackberry.
Он содержит вектор настроек объектов.

Моя текущая реализация для получения определенных значений параметров выглядит следующим образом

public String getSettingByName(String key)
{
    String value = "";
    for ( Enumeration e = _appSettings.elements(); e.hasMoreElements();)
    {
        if(((AppSettingsObject)e.nextElement()).get_key() == key)
        {
            value = ((AppSettingsObject)e.nextElement()).get_value();
        }
    }
    return value;
}

Есть ли лучший способ получить доступ к этому значению, чем циклическое перечисление?

Спасибо!

1 Ответ

2 голосов
/ 11 июля 2009

Вектор - это, по сути, просто растущий массив, поэтому вам нужно искать его, чтобы найти какой-либо конкретный элемент. Вы можете убедиться, что вектор отсортирован, что позволит вам выполнить двоичный поиск. Я сомневаюсь, что это будет иметь большое значение, так как кажется маловероятным, что у вас будет достаточно элементов в вашем векторе, чтобы оправдать небольшое увеличение производительности по сравнению со сложностью кода.

Однако, похоже, вы хотите иметь возможность сопоставлять ключи со значениями. В этом случае класс java.util.Hashtable может быть лучше:

Hashtable appSettings = new Hashtable();

appSettings.put("key1", "value1");
appSettings.put("key2", "value2");

String value1 = (String)appSettings.get("key1");
String value2 = (String)appSettings.get("key2");
...