You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ResultSet将HashMap存入ArrayList时类型不匹配问题求助

解决HashMap存入ArrayList时的类型不匹配问题

你遇到的问题其实很典型——泛型类型不兼容:你定义的KEYWORDS是ArrayList<String>,这意味着这个列表只能存放String类型的对象,但你试图往里面添加的是HashMap<String,String>类型的对象,两者完全不是一个类型,编译器肯定会报错啦。

接下来给你两种靠谱的实现方式,看你需求选:

方式一:直接用存HashMap的ArrayList

如果你就想保留用HashMap存每一行数据的方式,那只需要把ArrayList的泛型改成对应类型就行,另外注意resultSet.getString()本身返回的就是String,不用多此一举调用toString():

// 把泛型改成HashMap<String, String>,明确列表里存的是HashMap对象
ArrayList<HashMap<String, String>> KEYWORDS = new ArrayList<HashMap<String, 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>();
    // 建议把键名固定成"name"和"id",后续取值的时候不容易出错
    row.put("name", resultSet.getString(1));
    row.put("id", resultSet.getString(2));
    KEYWORDS.add(row);
}

方式二:用自定义实体类(更推荐)

如果你的业务就是专门存储标签的名称和ID,用自定义类会更清晰,可读性和可维护性都比HashMap强,还能避免拼写键名时的错误:

先写一个简单的Tag实体类:

public class Tag {
    private String name;
    private String id;

    // 构造方法
    public Tag(String name, String id) {
        this.name = name;
        this.id = id;
    }

    // 按需添加Getter和Setter方法
    public String getName() {
        return name;
    }

    public String getId() {
        return id;
    }
}

然后修改你的业务代码:

ArrayList<Tag> KEYWORDS = new ArrayList<Tag>();
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()) {
    String tagName = resultSet.getString(1);
    String tagId = resultSet.getString(2);
    Tag tag = new Tag(tagName, tagId);
    KEYWORDS.add(tag);
}

后续你要取数据的时候,直接调用tag.getName()和tag.getId()就可以了,比HashMap的row.get("name")靠谱多啦。

内容的提问来源于stack exchange,提问作者dsafas fsafasfsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:49:00