2015-11-15 18 views
0

我是一個Comp-Sci學生。我正在做一個賦值,我必須創建一個具有「鍵」(類型字符串)和「值」(類型對象)屬性的Table類。有點像微型數據庫。如果我使用使用「Key」作爲參數的get方法,它將返回「Value」屬性。Java-是不好的做法,使一個對象類型的數組

我想到我應該使用一個Object類型的多維數組,其中第一個元素爲「Key」,第二個元素爲「Value」。

我想知道這是否是不好的做法/或者如果有一個明顯的和更方便的方法來解決這個問題。


我決定做,因爲哈希映射爲DIS-允許: 我做了2周獨立的ArrayList。一個將存儲Keys,另一個將存儲Values。他們的指數將相應。因此,傳遞給getMethod的Key的索引將返回Key索引處的值ArrayList的值,因爲它們相對應。

感謝大家回答。我的賬戶相當新,所以我沒有很多權限,比如投票。這是對這個社區可能有多偉大的一個非常好的預覽。

+0

使用「地圖」 - 這正是他們的目的。 –

+2

使用['Map'](https://docs.oracle.com/javase/8/docs/api/java/util/Map.html)實現,例如['HashMap'](https:// docs .oracle.com/javase/8/docs/api/java/util/HashMap.html) –

+0

酷!我會完全研究一些教程。 – dirtyPlebeian

回答

0

您可以使用類似於Map接口的泛型。既然這是爲了學校,我想你的教授希望你自己實現它。但是,下面是可能的解決方案的樣子,以及測試它的一個示例主要方法。

public class Table<K, V> { 

    public static void main(String args) { 

     Table.Entry<String, Integer> table = new Table.Entry<>(); 
     table.key = "some key"; 
     table.value = 10; 

    } 

    public static class Entry<K, V> { 

     K key; 
     V value; 

    } 

} 
+0

感謝您的真棒迴應!不幸的是,我還沒有學習泛型。我們將在一週左右完成。 – dirtyPlebeian

1

沒有什麼原則上錯誤,與使用Object[]爲一類的私有內部運作的一部分,如果是使用最方便的數據類型。

很多容器類,如ArrayList和android的SparseArray,都是這樣做的。

在你的情況下,它聽起來像一個更方便的類型使用HashMap<String, Object>,因爲這允許非常快速的基本操作。

如果您不被允許使用HashMap,查找散列表的工作方式並考慮自己實現這樣的結構是個好主意。

+1

非常感謝您的出色答案! HashMap是不允許的,所以我非常想查找它們的功能。還要感謝關於它可以使用Object數組的好處。這只是另一件似乎太方便的事情。 – dirtyPlebeian

+1

只是不要過度使用它們。例如,公共方法應該很少返回一個'Object []'。 –

相關問題