【问题标题】:Java 8: store and retrieve data in form of a data table [duplicate]Java 8:以数据表的形式存储和检索数据
【发布时间】: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

【问题讨论】:

标签: java datatable java-8 store


【解决方案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];
      }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-26
        • 1970-01-01
        • 2021-01-21
        • 2013-09-04
        • 1970-01-01
        • 2012-12-05
        • 2011-08-16
        相关资源
        最近更新 更多