上一篇
Java如何高效遍历Result结果集?
- 后端开发
- 2025-05-29
- 2082
在Java中遍历数据库查询结果通常使用ResultSet对象,通过执行查询获取ResultSet后,可用while(rs.next())循环逐行处理,通过getInt、getString等方法按列名或索引获取数据,最后在finally块或try-with-resources中关闭连接释放资源。
在Java开发中,遍历result(结果集或集合对象)是常见操作,具体方法取决于result的数据类型,以下是针对不同场景的详细遍历方案,包含代码示例和最佳实践。
集合类结果的遍历
如果result是List、Set或数组等集合对象,可以通过以下方式遍历:

增强for循环(推荐)
List<String> result = Arrays.asList("A", "B", "C");
for (String item : result) {
System.out.println(item);
}
Java 8+ Stream API
result.stream().forEach(item -> {
System.out.println(item);
});
传统for循环(适合需要索引的场景)
for (int i = 0; i < result.size(); i++) {
System.out.println(result.get(i));
}
迭代器(Iterator)
Iterator<String> iterator = result.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}
数据库结果集(ResultSet)的遍历
若result是JDBC查询返回的ResultSet对象,需按以下步骤处理:
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM table")) {
while (result.next()) { // 逐行遍历
int id = result.getInt("id");
String name = result.getString("name");
System.out.println(id + ": " + name);
}
} catch (SQLException e) {
e.printStackTrace();
}
关键点
- 使用
try-with-resources确保自动关闭连接。 - 通过
result.next()移动游标并判断是否有数据。 - 按列名或索引(如
result.getInt(1))获取字段值。
Map类型结果的遍历
如果result是Map结构(如HashMap),可通过键值对遍历:

Map<String, Integer> result = new HashMap<>();
result.put("Apple", 10);
result.put("Banana", 20);
// 遍历键
for (String key : result.keySet()) {
System.out.println("Key: " + key);
}
// 遍历键值对(推荐)
for (Map.Entry<String, Integer> entry : result.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
JSON或自定义对象的遍历
若result是JSON字符串或自定义对象,需先解析为Java对象:
使用Gson/Jackson解析JSON
// 假设result是JSON数组字符串
String jsonResult = "[{"name":"Tom"}, {"name":"Jerry"}]";
List<User> users = new Gson().fromJson(jsonResult, new TypeToken<List<User>>(){}.getType());
users.forEach(user -> {
System.out.println(user.getName());
});
自定义对象遍历
class User {
private String name;
// Getter/Setter省略
}
List<User> result = getUserList();
result.forEach(user -> System.out.println(user.getName()));
注意事项
- 资源释放:数据库
ResultSet、Connection等必须关闭,避免内存泄漏。 - 空值处理:遍历前检查
result是否为null,防止NullPointerException。 - 性能优化:
- 大数据量时避免频繁IO操作。
- 使用分页查询减少内存占用。
- 并发安全:多线程环境下需同步遍历操作(如使用
ConcurrentHashMap)。
引用说明
- Oracle官方文档:Java Collections Framework
- JDBC教程:Processing ResultSet
- Google Gson:GitHub仓库
通过以上方法,开发者可根据具体场景选择最合适的遍历策略,确保代码高效且易维护。

