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

更新:
这是我的模特班..。
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());
}}
发布于 2018-04-17 08:33:35
我已经尝试过代码,如果您删除注释,它似乎工作得很好。
我猜是因为注释:
@RequiresApi(api = Build.VERSION_CODES.KITKAT)不注射equals和hashCode的方法。我强烈建议删除这些注释,因为equals和hashCode绝不是Kitkat API的唯一部分。它们从Java一开始就已经存在了。
https://stackoverflow.com/questions/49872238
复制相似问题