2016-11-27 11 views
0

Итак, я пытаюсь создать интеллектуальную структуру данных, основанную на дереве AVL и Hash Table.Создание интеллектуальной структуры данных в Java

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

Например, если у меня есть список n размером 1000, он будет реализован с использованием таблицы Hash. Для чего-либо более 1000, используя дерево AVL.

Код для этого:

public class SmartULS<K,V> { 

protected TreeMap<K,V> tree = new TreeMap<>(); 
protected AbstractHashMap<K,V> hashMap = new AbstractHashMap<K,V>(); 

public void setSmartThresholdULS(size){ 
    int threshold = 1000; 
    if (size >= threshold) { 
     map = new AbtractMap<K,V>(); 
    } 
    else 
     map = new TreeMap<K,V>(); 

    } 
} 

Теперь после этого, я должен писать стандартные методы, такие как

Get (SmartULS, Key), добавьте (SmartULS, Key, Value), удалить (SmartULS, Key), nextKey (Key), previousKey (Key) и т. Д.

Я действительно потерял, как начать это? Я думал о создании таких методов, как это (написано в псевдо):

Algorithm add(SmartULS, Key, Value): 
i<- 0 
If SmartULS instanceof AbstractHashMap then 
For i to SmartULS.size do 
     If Key equals to SmartULS[i] then 
      SmartULS.get(Key).setValue(Value) 
     Else 
      SmartULS.add(Key, Value) 
Else if SmartULS instanceof TreeMap then 
    Entry newAdd equals new MapEntry(Key, Value) 
    Position<Entry> p = treeSearch(root(), Key) 
+0

Пожалуйста, ознакомьтесь с [просить] –

+0

@EngineerDollery Вместо размещения, что вы могли бы помочь парню. – X1XX

ответ

0

Вы находитесь на правильном пути, это, как я понял ваш вопрос и реализовали его:

public class SmartULS<K, V> { 

    Map<K,V> map; 

    public static final int THRESHOLD = 1000; 

    public SmartULS(int size) { 
     if(size < THRESHOLD) { 
      map = new HashMap(); 
     } else { 
      map = new TreeMap(); 
     } 
    } 

    public V get(K key) { 
     return map.get(key); 
    } 

    public V put(K key, V value) { 
     return map.put(key, value); 
    } 

    public V remove(K key) { 
     return map.remove(key); 
    } 
} 

Based при заданном начальном размере конструктор решает, инициализировать хэш-таблицу или дерево. Я также добавил функции get, put и remove и использовал функции интерфейса Map.

Я не понял, какие функции nextKey и previousKey предполагают делать или возвращать, поэтому туда не могли помочь.

Способ использования класса будет выглядеть следующим образом:

public static void main(String[] args) { 

    SmartULS<String, String> smartULS = new SmartULS(952); 

    smartULS.put("firstKey", "firstValue"); 
    smartULS.put("secondKey", "secondsValue"); 

    String value = smartULS.get("firstKey"); 

    smartULS.remove("secondKey"); 

} 

Надеется, что это помогает :)

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

  • Нет связанных вопросов^_^