2016-12-06 3 views
0

Я собираюсь создать класс Java для андроид проекта, которые дают номер и вернуть региональное имя на основе телефонного кода (это для местного применения)Лучший способ для хранения и поиска с помощью большого списка ключа, значение

Наша длина телефонных номеров составляет от 8 до 10, региональная длина кода - 4 или 5.

  1. Что лучше всего хранить региональные коды? Is HashMap<Integer, String> подходит по этой причине <region code, region name>? (данные для каждого города могут составлять до 200 записей)

  2. Что лучше всего искать по этому вопросу? Как я сказал ранее, региональная длина кода может быть 4 или 5, тогда мы должны искать в первый раз между 4 цифрами, а затем, если не было никакого результата поиска 5 цифр?

ответ

1

Да. Вы можете использовать HashMap для хранения данных. После хранения данных с помощью метода keySet() HashMap вы получите список всех ключей как отсортированный (восходящий) набор.

После этого, используя метод contains() Set, вы узнаете, что код региона существует или нет, независимо от 4 или 5 цифр (еще вы можете попробовать первые 4 цифры, если он возвращает false, тогда вы можете попробовать 5 цифр).

Отправляя этот ключ (код региона) на свою карту, вы легко получите название региона.

1

Использование хэш-карты будет вашим лучшим выбором. Это имеет время работы O (1), поэтому при поиске ключа, так что вы можете сделать что-то вроде:

HashMap<String, Integer> hm = new HashMap<String, Integer>(); 
hm.put("yourKey", 12345); 
...//repeat as needed 
hm.get("yourKey"); 

И это будет самый быстрый способ получить значение. Если это значение существует, оно вернет отображаемое значение, иначе оно вернет null, если сопоставления нет. Длина ключа не имеет значения.