Java :比较具有相同属性但不指向内存中相同点的相同对象



我有一个这样的自定义适配器:

private List<User> items = new ArrayList<>();
private Context context;
public UserSpinnerAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull
        List<User> objects) {
    super(context, resource, objects);
    this.items = objects;
    this.context = context;
}

当我想找到从 Web API 获取的对象用户的位置时,public int getPosition(@Nullable User item)的结果始终为 -1。我认为这是我传递给适配器的项目的原因,不仅与内部的适配器用户列表相同,尽管每件事都相同,但指向另一个内存点。

那么我如何比较两个具有相同属性但实际上是分离的对象呢?

你应该为User对象实现一个equals/hashCode

您应该重写所比较对象的equals/hashCode方法。您可以通过在班级内按 Alt+Insert 并选择 equals() and hashCode() 来轻松完成。如果您的类有其他自定义类型的字段,例如

public class User {
     ...
     private Location location;
     ...
}

您还必须为位置实现equals/hashCode

相关内容

  • 没有找到相关文章

最新更新