2010-08-04 106 views
1

我想實現一個DataSource接口(Java),其中,允許您從數據中獲取nextRow()。我最初只是想通過HashMaps實現數據存儲,但從底層數據結構抽象出來並提供如前所述的接口會很酷。DataSource接口的HashMap實現:nextRow()方法?

這聽起來像個好主意嗎?爲HashMap實現提供nextRow()方法似乎有些雜亂 - 我想我需要在數據的集合視圖上提供迭代器。我想我還需要提供一個resetIterator方法?

爲了提供更多的一些細節:

  • 我想到了newRow()方法將返回HashMap<String, String>
  • HashMap實現數據存儲的將是HashMap<String, HashMap<String, String>>

有什麼想法和意見是多少不勝感激!

+1

使用地圖貼圖的任何特定原因?地圖列表聽起來像是一個更好的選擇。 – naikus 2010-08-04 18:19:48

+0

基本上我(在當前的例子中)是從一個csv文件中獲取數據,並且我希望每一行都能被某個數據(來自一列的數據,或者可能是幾列的組合)唯一標識。 所以這些行將作爲HashMap 返回,並且它們將全部存儲在一個HashMap中,其中id值爲key – QuakerOat 2010-08-04 19:58:34

回答

0

Map接口確實通過.keySet(),.values().entrySet()方法公開迭代器。你可以在幕後使用其中的一種來完成你的想法。

在附註中,每個數據行的HashMap都有很多開銷。如果您可以事先修改一組列,那麼使用List(也許是ArrayList)或者甚至只是一個普通數組來代表每一行會便宜很多。