如何将ResultSet数据放在没有重复的对象中

时间:2016-09-02 12:35:24

标签: java jdbc

我的要求是将结果数据转换为对象形式,因为我需要在其他页面上传输数据,结果集不可转让。我有一个ResultSet resultSet = stmt.executeQuery(query); while(resultSet.next()) { System.out.println(resultSet.getString(1) + "," + resultSet.getString(2)); } ,它返回像

这样的行中的数据
Column1 Column2
100 One
100 Two
100 Three
100 Four
100 Five
100 Six
101 Seven
101 Eight
103 Nine
103 Ten
103 Eleven

结果:

Column1 Column2
100 One
    Two
    Three
    Four
    Five
    Six
101 Seven
    Eight
103 Nine
    Ten
    Eleven

但是我想要这种格式的对象中的数据:

{{1}}

这意味着我想要一个列表/哈希映射,其中第1列数据应该是键,对应的第2列数据应该在某个数组/集合对象中作为值,这样我就可以通过提供特定的键来访问所有相应的值

2 个答案:

答案 0 :(得分:0)

为简单起见,您可以使用hashmap。

    HashMap<String, ArrayList<String>> hashmap = new HashMap<String, ArrayList<String>>();

以这种方式,您的第一列成为键,第二列中的值变为ArrayList,对应于第一列的实现请通过以下url

HashMap(key: String, value: ArrayList) returns an Object instead of ArrayList?

答案 1 :(得分:0)

如果我理解你正在尝试做什么,情况就是这样:

Map<String, List<String>> mappedObjects = new HashMap<String, List<String>>();
while (resultSet.next()) {
    List<String> values = new ArrayList<>();
    if (mappedObjects.get(resultSet.getString(1)) != null) {
        values = (List<String>) mappedObjects.get(resultSet.getString(1));
    }
    if (values.size() > 0) {
        values.add(resultSet.getString(2));
    } else {
        values.add(resultSet.getString(2));
    }
    mappedObjects.put(resultSet.getString(1), values);
}