java - 使用 resultSet 值的 HashMap 到 ArrayList

标签 java arraylist hashmap

我想查询sql语句并创建一个hashmap来存储2个值。一个是 id,另一个是名称。然后我想将它添加到 ArrayList 中。我的代码有问题,与特定类型不匹配。我不明白这有什么问题。你能解释一下我在这里做错了什么吗?据我所知,您无法添加 <String, String> 类型的 HashMap 到 ArrayList 但我怎样才能以其他方式实现它?

ArrayList<String> KEYWORDS = new ArrayList<String>();

String sql = "SELECT da_tag_name, da_tag_id FROM da_tags WHERE da_tag_type_id = 8";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet resultSet = stmt.executeQuery();

while (resultSet.next()) {
    HashMap<String, String> row = new HashMap<String, String>();
    row.put(resultSet.getString(1).toString(), resultSet.getString(2).toString());
    KEYWORDS.add(row);
}

最佳答案

这段代码有一些问题。

  1. 列表的通用类型与您尝试添加到其中的内容不匹配
  2. 您应该养成针对接口(interface)而不是实现进行编程的习惯
  3. 变量应该采用驼峰命名法(常量全部大写)

类似这样的:

// Note: as of Java 7 you can simplify generics using the diamond operator   
List<Map<String, String>> keywords= new ArrayList<>();

String sql = "SELECT da_tag_name, da_tag_id FROM da_tags WHERE da_tag_type_id = 8";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet resultSet = stmt.executeQuery();

while (resultSet.next()) {    
    Map<String, String> row = new HashMap<>();
    row.put(resultSet.getString(1).toString(), resultSet.getString(2).toString());    
    keywords.add(row);    
}

最后,我会考虑设计并质疑仅具有一个条目的 HashMap 的使用。

关于java - 使用 resultSet 值的 HashMap 到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48503696/

相关文章:

java - 如何在 lambda 函数中对收集 IntStream 的值进行操作

java - UnsupportedOperationException 打开相机时出错 android

java - 开发多屏幕时,绘图应该放在哪里?

android - 将带有对象的 ArrayList 传递给新的 Activity?

java - 使用 DOM 将 XML 解析为 HashMap

java - Spring JPA - 一对多 - 重新养育

java - 为一些方法使用的变量分配内存的最佳位置在哪里?

java - 一个让我困惑的Android场景

c - 这个迷你 HashMap 有什么问题?

java - 为什么 HashMap.java 中的常量 DEFAULT_INITIAL_CAPACITY 使用 1 << 4 而不是 16?