2009-07-11 2 views
0

В настоящее время я реализую Persistant Storage Object для моего приложения Blackberry.
Он содержит вектор объектов.J2ME Получить определенный объект из вектора

Моей текущая РЕАЛИЗАЦИЯ, чтобы получить конкретное значение настройки выглядит следующим образом

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

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

Спасибо!

ответ

2

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

Похоже, что вы хотите иметь возможность сопоставлять ключи к значениям. В этом случае класс 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"); 
+0

Отличная вещь, какова ваша опция при сравнении служебных/служебных расходов? –

+0

Я имел в виду мнение =) –

+1

Накладные расходы каким образом? С точки зрения эксплуатационных расходов, Hashtable эффективнее, чем вектор для поиска ключей. Вы можете искать ключ в O (1), постоянный, время, используя Hashtable, где он будет брать O (n), линейный, с помощью Vector или O (logn), логарифмический, если бы он был отсортирован, и вы сделали двоичный поиск. Время выполнения не будет иметь значения для небольшого количества элементов, которые вы, вероятно, будете хранить в нем. Что касается пространства, вам, вероятно, не нужно беспокоиться об этом. С точки зрения простоты использования, это основная причина, по которой вы выбрали Hashtable здесь. это гораздо проще использовать для сопоставления ключей со значениями, как вы можете видеть. – IRBMe