我想查询sql语句并创建一个哈希表来存储2个值。一个是ID,另一个是ID。然后,我想将其添加到ArrayList中。我的代码有问题,它与特定类型不匹配。我不明白这是怎么回事。你能解释一下我在做什么错吗?据我所知,您不能将<String, String>类型的哈希图添加到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);
}

最佳答案

此代码存在一些问题。


列表的通用类型与您要添加到列表中的类型不匹配
您应该养成对接口进行编程而不是对实现进行编程的习惯
变量应为camelCase(所有大写字母均表示常量)


像这样:

// 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的使用。

10-01 21:33