什么是Java的高效行列(类似ResultSet)数据结构?

时间:2012-10-29 12:33:48

标签: java data-structures

  

可能重复:
  Table like java data structure

我正在为Java寻找类似于Table的数据结构。到目前为止,我还没有找到一个,这真的很令人沮丧,因为我肯定肯定会有一个。请注意,这与表格的图形表示无关,只与逻辑模型有关。

这个想法很简单,你有一个像这样的表:

+-------+-----+-----------+
| Name  | Age | city      |
+-------+-----+-----------+
| Steve | 21  | London    |
| John  | 40  | Amsterdam | 
+-------+-----+-----------+

现在我需要迭代不同的行并根据列名检索值。它必须是灵活的,所以我不知道前面的列名(所以豆类列表不是一个选项)。我能找到的具有此功能的最佳结构是 java.sql.ResultSet ,但我不习惯在非SQL相关的上下文中使用它。我也不想要一个HashMaps列表,因为这意味着存储每行的密钥,效率非常低。

这似乎是一个基本的结构,但由于在Java中搜索类似结构的表格时,大量的GUI相关帖子,我找不到任何关于它的内容。

修改

对于我需要的具体示例,以下代码:

TableStructure table = getTable(); // Gets my desired table with its filling

while (table.next()){
    System.out.println("Name: " +  table.get("Name"));
    System.out.println("Age: " + table.get("Age"));
    System.out.println("City: " + table.get("City"));
    System.out.println("NonExistent: " + table.get("NonExistent"));
}

应该产生以下输出:

Name: Steve
Age: 21
City: London
NonExistent: null
Name: John
Age: 40
City: Amsterdam
NonExistent: null

2 个答案:

答案 0 :(得分:2)

ResultSet是元组的列表(或一组,取决于排序的必要性和元素的多样性),因此真的通用答案将是

class TableStructure<Tuple>
{
    List<Tuple> tuples;
    Iterator iterator;

    public Tuple next() 
    {
        if ( iterator == null ) { iterator = tuples.iterator(); /* NPE prone */ }
        return iterator.next()
    }
}

(或更好,让TableStructure扩展List并直接使用迭代器)

,其中

class Tuple { Map<String,Object> attributes; }

此构造允许表格中的不同行大小,这在DB设置中违反了第一个(或第二个?)正常形式原则。

希望有所帮助。

干杯,

答案 1 :(得分:0)

List<Map<String, ?>>怎么样?对于具体实现,您可以使用ArrayList<HashMap<String, Object>>