有没有我们可以在java中对类似的数据进行分组?
我想将具有相同ID的所有数据分组并打印出来。
我正在使用jdbc查询数据,并且正在搜索我可以使用的库。
任何想法? 感谢
答案 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的行将连续出现。