首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Set<>为相同的值提供不同的对象

Set<>为相同的值提供不同的对象
EN

Stack Overflow用户
提问于 2018-04-17 07:29:04
回答 1查看 89关注 0票数 1

嗨,我正在尝试实现一个基于SQLite的应用程序,并且在我的数据库表中有一些值。我的一篇专栏包含了一些类似的值,为了克服重复,我使用了set<>

代码语言:javascript
复制
public Set<NewTableAnswers> newtableAnswers(String product_id) {
    Set<NewTableAnswers> d = new HashSet<>();
    SQLiteDatabase db = this.getReadableDatabase();

    String SelectA1 = "SELECT * FROM " +TABLE_ANSWERS+ " WHERE " + ANSWER_ID + " = '"+ product_id + "' ";
    Cursor cursor = db.rawQuery(SelectA1,null);
    if (cursor.moveToFirst()){
        do{
            d.add(new NewTableAnswers(cursor.getString(1)));
        }while (cursor.moveToNext());
    }
    db.close();
    return d;

如果存在重复,则set应遵循其属性以避免重复,但它为我提供了与不同的objects..like相同的值。

更新:

这是我的模特班..。

代码语言:javascript
复制
public class NewTableAnswers {

String pro_id;

public NewTableAnswers(String pro_id) {
    this.pro_id = pro_id;
}

public String getPro_id() {
    return pro_id;
}

public void setPro_id(String pro_id) {
    this.pro_id = pro_id;
}

@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof NewTableAnswers)) return false;
    NewTableAnswers that = (NewTableAnswers) o;
    return Objects.equals(getPro_id(), that.getPro_id());
}

@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public int hashCode() {

    return Objects.hash(getPro_id());
}

}

数据库图像

EN

回答 1

Stack Overflow用户

发布于 2018-04-17 08:33:35

我已经尝试过代码,如果您删除注释,它似乎工作得很好。

我猜是因为注释:

代码语言:javascript
复制
@RequiresApi(api = Build.VERSION_CODES.KITKAT)

不注射equalshashCode的方法。我强烈建议删除这些注释,因为equalshashCode绝不是Kitkat API的唯一部分。它们从Java一开始就已经存在了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49872238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档