2014-09-11 69 views
0

是我試圖設置我的樹形圖構造函數的方式是否正確?樹形圖構造函數

import java.util.TreeMap ; 

public class Table<K extends Comparable<K>, T> { //K = Key, T = Item 

    TreeMap<K, T> tm; 

    public Table<K, T>() { 
     tm = new TreeMap<K, T>(); 
    } 


    public boolean isEmpty() { 
     return tm.isEmpty(); 
    } 

    public int size() { 
     return tm.size(); 
    } 

    public void tableInsert(K key, T item) throws TableException { 
     tm.put(key, item); 
    } 

    public boolean tableDelete(K key) { 
     if (tm.containsKey(key)) { 
      tm.remove(key); 
      return true; 
     } else { 
      return false; 
     } 
    } 

    public T tableRetreive(K key) { 
     return tm.get(key); 
    } //return null if not found 

    public void printTable() { 
     TreeMap<K, T> tmclone = (TreeMap<K, T>) tm.clone(); 
     while (!tmclone.isEmpty()) { 
      System.out.println(tmclone.pollFirstEntry()); 
     } 


    } //print in search key order 
} 

我有另一個類,將創建students,並與put方法將插入一個新的地圖樹..但是編譯器說,它期待一個不同的角色。另外,調用構造函數的正確方法是輸入TreeMap blah<K,T> = new TreeMap是否正確?

+0

如果出現構建錯誤,請將其放入您的問題中。 – mostruash 2014-09-11 03:47:16

回答

0

這這裏代碼:

public Table<K, T>() { 
    tm = new TreeMap<K, T>(); 
} 

需要改變這樣的:

public Table() { 
    tm = new TreeMap<K, T>(); 
} 

否則都好。

+0

當我調用「Table sTable = new Table();」從我的主要方法它不會與該構造函數編譯。它是否期望K和T的參數? – Spire 2014-09-11 05:17:42

+0

當你實例化一個'Table'時,你將需要鍵和值的類型參數,否則你會得到一個編譯器警告。根據你需要的'Table'的類型,像'Table sTable = new Table ();'應該工作。 – msandiford 2014-09-11 05:39:07

+0

啊,你是正確的先生!好吧,所以我需要做Table ,因爲我需要一個數字來匹配學生對象。 – Spire 2014-09-11 05:58:39

0

如果你問構造函數中的初始化是否有功能(?),是的。您也可以使構造這樣上面的初始化:

public class Table <K extends Comparable<K>, T> { //K = Key, T = Item 
    TreeMap<K,T> tm; 

    { //Initializer 
      tm = new TreeMap<K,T>(); 
    } 

    public Table<K,T>() { 
     //Your constructor here 
    } 

    //Other methods... 
} 

至於你問題的第二部分,有太少根據您的描述來診斷問題,沒有看到更多的代碼,並獲得更多的細節。

+0

爲什麼你在'tm'初始化時加上大括號? – mostruash 2014-09-11 03:46:40

+0

這是一個初始化程序: http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html – Tgsmith61591 2014-09-11 03:47:58

+0

當它不是「初始化程序」時,即它周圍沒有大括號時,它有什麼區別? – mostruash 2014-09-11 03:53:02