2010-08-04 77 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)或者甚至只是一个普通数组来代表每一行会便宜很多。