2011-07-28 35 views
1

第一列將有序列號,第二,第三和第四列將具有x座標,y座標和速度。給定序列號,我可能必須檢索任何字段。假設我想獲得序列號7的y座標或者序列號10的速度。一種方法是讓內部類具有x,y和速度,並將序列號映射到內部類的對象。但它使事情看起來很複雜,檢索一個特定的字段值似乎很複雜。有更好的解決方案如何使用Java存儲表格並從中檢索數據?

+1

只是一個補充:序列號將是唯一的。 – aps

+0

存儲_where_? –

+0

在我的程序本身。該程序將使用它。 – aps

回答

1

創建一個正確實現hashCode()和equals()的鍵對象。看起來你的序列號可能是直接可用的。

創建一個數據對象,其中包含您需要存儲的所有字段以及每個字段x的getX()和setX()。

創建一個Map<KeyObject,DataObject>並將其用於(鍵,數據)對。

要非常小心地刪除過時的對象,否則會產生內存泄漏。

+0

可否請您詳細說明或提供有關您提到的最後一點的鏈接? 「要非常小心地刪除過時的對象,否則會發生內存泄漏。」不要太在意它的意思。謝謝。 – aps

+0

如果您在地圖中保留填充對象的內容,則它們將保留,直到地圖被垃圾收集爲止。因此,如果有一對你知道你永遠不會再使用,你需要從地圖手動刪除它們,而不是依靠垃圾收集器。 –

+0

好的。如何顯式刪除我不需要的對象? – aps

1

如何使用數組或映射(集合 - >映射)?

使用數組:只需創建一個您需要的維數組。在你的情況:

Array[number_of_itens_to_store][3] 
// 3 => 0 = id, 1 = x, 2 =y, 3 = speed 

With Maps:看看http://download.oracle.com/javase/6/docs/api/java/util/Map.html。您可以使用您的ID作爲K(鍵)和一個數組作爲值。

您可以查看Collections(http://download.oracle.com/javase/tutorial/collections/index.html),甚至可以創建自己的集合,只需遵循教程。

相關問題