在java中分组数据

时间:2010-08-16 15:25:33

标签: java jdbc

有没有我们可以在java中对类似的数据进行分组?

我想将具有相同ID的所有数据分组并打印出来。

我正在使用jdbc查询数据,并且正在搜索我可以使用的库。

任何想法? 感谢

3 个答案:

答案 0 :(得分:4)

使用Map<GroupID, List<Data>>

Map<Long, List<Data>> groups = new HashMap<Long, List<Data>>();
while (resultSet.next()) {
    Long groupId = resultSet.getLong("groupId");
    String col1 = resultSet.getString("col1");
    String col2 = resultSet.getString("col2");
    // ...
    List<Data> group = groups.get(groupId);
    if (group == null) {
        group = new ArrayList<Data>();
        groups.put(groupId, group);
    }
    group.add(new Data(groupId, col1, col2 /* ... */));
}

您也可以将其设为另一个(父)bean的属性。

另见:

答案 1 :(得分:0)

理想情况下,您应该在SQL查询中使用where子句将返回的数据限制为有问题的ID:

select *
from table
where id = 'xxxxxx'

当然,如果你打算输出所有id的数据,这可能是一个糟糕的选择,因为你的应用程序将执行多个SQL查询,这通常会导致性能下降。

至于用Java分组数据,请查看 java.util.HashMap (或任何实现Map接口的容器类)。 HashMap是键值对的容器。在您的情况下,'key'可以是表示您的id的String(或任何适用的数据类型),'value'可以是包含与id键关联的数据的对象(即:字符串的ArrayList,或者您定义的新类,以帮助您管理数据)

答案 2 :(得分:0)

您在寻找SQL ORDER BY子句吗?

SELECT columns
WHERE  criteria
ORDER BY id ASC;

这将为您提供符合条件的所有数据,并按ID列进行排序,这自然意味着所有具有相同ID的行将连续出现。