Java中的通用表结构(如ResultSet)

Chr*_*s K 1 java resultset data-structures

可能重复:
表格类似于java数据结构

有谁知道我是否有一个很好的通用的基于表格的结构,我可以用它来操纵数据?ResultSet是一个接口,如果我想要没有数据库的类似功能,我是不是必须完全实现一些东西?Apache Commons Collections似乎没有任何直接适用的东西.

Bal*_*usC 6

通常你会使用一个ListSet一个Javabeans.每个Javabean反过来代表一个真实世界实体,就像数据库中的一行.例如User:

public class User {
    private Long id;
    private String name;
    private Integer age;
    // Add/generate getters+setters.
}
Run Code Online (Sandbox Code Playgroud)

List<User> users = new ArrayList<User>();
users.add(new User(1L, "foo", 30));
users.add(new User(2L, "bar", 20));
//...
Run Code Online (Sandbox Code Playgroud)

List规定通过索引快速访问方法.

对于未确定数量的属性(列),您可以考虑使用Map<String, Object>替代,其中键表示属性(列)名称.

List<Map<String, Object>> table = new ArrayList<Map<String, Object>>();
Map<String, Object> row = new HashMap<String, Object>();
row.put("id", 1L);
row.put("name", "foo");
row.put("age", 30);
table.add(row);
// ...
Run Code Online (Sandbox Code Playgroud)

它只比简单的Javabean增加了更多的开销,因为这些字符串键也需要存储在堆中.

如果您不关心列名称,那么您也可以继续使用List<List<Object>>或者甚至不那么灵活Object[][].两者都可以通过x和轻松访问元素y.