2009-10-23 76 views
0

什麼是存儲大約140行3列的oracle表的最佳數據結構。我正在考慮一個多維數組。存儲3列oracle表的最佳Java數據結構? 3列數組?或雙圖?

通過最好的,我並不一定意味着最有效的(但我很好奇,想知道你的意見),因爲該計劃將作爲作業運行用大量的時間來運行,但我也有一些限制:

一開始可能有多個鍵爲「空」。所以第一列可能有多個空值。我還需要能夠訪問其他列中的元素。比線性搜索更好地訪問數據的任何東西?

所以再次,類似[] [] []的東西會工作..但有沒有像我可以通過鍵或第二列訪問的3列地圖?我知道地圖只有兩個值。

所有的數據可能都是字符串或者是字符串。

感謝

回答

2

如果您需要通過鍵和另一個鍵訪問您的數據,那麼我只會使用2個地圖來定義一個單獨的類來保存您的記錄。

class Record { 
    String field1; 
    String field2; 
    String field3; 
} 

Map<String, Record> firstKeyMap = new HashMap<String, Record>(); 
    Map<String, Record> secondKeyMap = new HashMap<String, Record>(); 
+0

自從他聲明field1可以爲空,這不是一個好主意。 – 2009-10-23 10:16:56

+0

如果密鑰爲空,那麼通過該密鑰搜索沒有很大的用處。 – 2009-10-26 13:50:48

+0

此外,他可能支持兩組對象,它們的第一個鍵爲空,第二個鍵爲空。 – 2009-10-26 13:52:32

1

我想創建一個對象,它映射你的記錄,然後創建該對象的集合。

4

具有3個字段的自定義類以及該類的java.util.List

在這種情況下,將數據存儲到陣列中並沒有什麼好處,性能沒有任何改善,代碼可維護性當然沒有提高。

3

這是人們在面向對象的語言編寫FORTRAN另一個例子。

Java的對象。如果你開始使用對象來抽象你的問題,將細節從客戶端中隱藏起來,並減少耦合,你會變得更好。

這三個項目代表什麼明智的對象,有意義的行爲?我會從此開始,並且在後面擔心數據結構和持久性。

所有的數據可能都是字符串或者是字符串。

這很好,如果他們真的是字符串,但我會鼓勵你更深入地看,看看你能做得更好。

例如,如果您編寫使用信用評分的應用程序,則可能試圖將其作爲數字列存儲在數據庫中。但是,您可以從難度更大的問題中獲益,並將該值封裝到CreditScore對象中。當你有這些時,你會意識到你可以添加諸如單位(「FICO」與「TransUnion」),比例(範圍從0到850)以及一些豐富的行爲(例如,關於何時重新排序分數的規則)。您將所有內容封裝到單個對象中,而不是散佈用於在您的代碼庫上對信用評分進行操作的邏輯。

從表和列以及更多關於對象的角度開始思考。或者切換語言。 Python具有內置元組的概念。也許這對你會更好。

相關問題