2015-05-17 4 views
0

Я ищу, чтобы построить хеш-таблицу, в которой несколько ключей String, которые используют одно и то же значение байтового массива, объединены в одно значение с несколькими ключами. Это значит, что значение не сохраняется снова и снова с разными значениями. Добавление ключа со значением также должно перезаписать любой существующий ключ с тем же именем, но сохранить значение, если оно имеет другой ключ, но удалите его, когда другого ключа нет.Более эффективная таблица хешей

EDIT: Как создать эту структуру данных? Например, если я вставляю «привет» со значением, то добавляю «Мир» с тем же значением, я хотел бы, чтобы структура была чем-то вроде строк [[Hello, World], Value] вместо [Hello, Value] , [Мир, значение]. Я попытался использовать список как свой hashkey, но обнаружил, что не могу вспомнить значение. Вот мой код:

HashMap<List<String>, byte[]> map = new HashMap<List<String>, byte[]>(); 

public void storeByte (String id, int value) { 
     byte[] byteValue = new byte[value]; 
     ArrayList<String> idlist = new ArrayList<String>(); 
     idlist.add(id); 
     map.put(idlist, byteValue); 
     System.out.println(map); 
    } 

public byte[] fetchByte(String id) { 
     ArrayList<String> idlistsearch = new ArrayList<String>(); 
     idlistsearch.add(id); 
     byte[] output = map.get(id); 
     if(map.containsKey(idlistsearch)){ 
      output = map.get(id); 
      } else { 
       return null; 
      } 
     return output; 

Я надеюсь, что это имеет смысл,

Спасибо.

+1

Возможно, вам нужно будет дать ясный пример того, что вы пытаетесь сохранить и как его следует обрабатывать. Из вашего описания нелегко определить, чего вы пытаетесь достичь. – Bobulous

+1

Каков ваш вопрос? – Radiodef

ответ

0

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

Как работает HashMap и Hashtable. Никакой другой опции не существует.

При определении

byte[] bytes = 

это ссылка, а не сам объект. Когда вы добавляете эту ссылку на карту, вы добавляете эту ссылку и ее можно добавить столько раз, сколько захотите, но есть только одна копия.

, если вставить «привет» со значением, а затем добавить «Мир» с тем же значением,

Вы можете сделать

byte[] bytes = 
map.put("Hello", bytes); 
map.put("World", bytes); 

Это две клавиши, и только одно значение ,

Смежные вопросы