Java 8:以数据表的形式存储和检索数据

Posted

技术标签:

【中文标题】Java 8:以数据表的形式存储和检索数据【英文标题】:Java 8: store and retrieve data in form of a data table [duplicate] 【发布时间】:2017-05-28 18:02:44 【问题描述】:

我想以数据表的形式存储数据,如下所示:

+--------+-------+-----+-----+
|        |   s1  |  s2 |  s3 |
+--------+-------+-----+-----+
|   c1   |   5   |  7  |  7  |
+--------+-------+-----+-----+
|   c2   |   1   |  6  |  9  |
+--------+-------+-----+-----+
|   c3   |   0   |  9  |  6  |
+--------+-------+-----+-----+

有什么好方法可以将它存储在 java 中,以便我可以通过它们的键检索数据。

我需要一个如下所示的方法:

public int getData(String row, String column);

// Example:
int i = getData("c1", "s1") // Would return 5

【问题讨论】:

三列都叫s1? 请提供Minimal, Complete and Verifiable example。 @pringi 不,它们都是不同的,谢谢输入 你可以看看谷歌guava的Table 【参考方案1】:

你可以使用番石榴

https://github.com/google/guava/wiki/NewCollectionTypesExplained#table

Table<String, String, Integer> records = HashBasedTable.create();
records.put("s1","c1",5);
records.put("s3", "c3", 6);

Integer val = records.get("s1","c1"); // val = 5

【讨论】:

【参考方案2】:

解决这个问题的一种方法是使用这样的数据结构:

Map<String, Map<String, Integer>> map;

【讨论】:

【参考方案3】:

二维地图

Map<String, Map<String, Integer>> map;

public int getData(String row, String column) 
    return map.get(row).get(column); // can lead to NullPointerException

或者你可以使用二维数组:

int[][] array = new int[10][12];

public int getData(String row, String column) 
    int x = ...; // get index from string
    int y = ...; // get index from string
    return array[x][y];

第二种方法只有在表的结构不会经常变化并且可以从字符串中解析出索引的情况下才可行。

【讨论】:

以上是关于Java 8:以数据表的形式存储和检索数据的主要内容,如果未能解决你的问题,请参考以下文章

JPA教程

以 XML 形式检索 SQL 数据的问题

如何检索存储在 select2 下拉列表中的数据?

以 IEnumerable 形式检索 Json 数据

从数据库中检索和解析 MIME 电子邮件

我正在尝试使用 ajax 从数据库中检索数据并以引导模式中的形式填充