Java 我有一个arraylist,我在其中验证特定对象是否存在,但即使它存在,也总是返回false
嗨,我有一个名为userdata的类,它返回类型为User的Userarraylist。当我尝试使用contains方法检查特定属性是否存在时,它总是返回false为什么 实际上,我希望数组列表是泛型的,它应该返回数组列表中设置的对象Java 我有一个arraylist,我在其中验证特定对象是否存在,但即使它存在,也总是返回false,java,Java,嗨,我有一个名为userdata的类,它返回类型为User的Userarraylist。当我尝试使用contains方法检查特定属性是否存在时,它总是返回false为什么 实际上,我希望数组列表是泛型的,它应该返回数组列表中设置的对象 String className = data.getUserData().get(0).getClass().getSimpleName(); if(className.equalsIgnoreCase("User")) { ArrayList<U
String className = data.getUserData().get(0).getClass().getSimpleName();
if(className.equalsIgnoreCase("User")) {
ArrayList<User> userdata=new ArrayList();
userdata = data.getUserData();
System.out.println(data.getUserData().contains(u.getUserId()));
if(userdata.contains(u.getUserName())) {
System.out.println(userdata.get(0).getEmailId());
}
}
String className=data.getUserData().get(0.getClass().getSimpleName();
if(className.equalsIgnoreCase(“用户”)){
ArrayList userdata=新的ArrayList();
userdata=data.getUserData();
System.out.println(data.getUserData().contains(u.getUserId());
if(userdata.contains(u.getUserName())){
System.out.println(userdata.get(0.getEmailId());
}
}
当您检查ArrayList是否包含ID或字符串时,它是一个用户列表
userdata.contains(u);
问题是,
ArrayList
包含对象
,而不是这些对象的id
您试图将u.getUserId
与列表中的对象进行比较,这不是有效的比较(User!=int)
更新
boolean contains = false;
for (User user : userdata) {
// assuming userID is a number!!
if(user.getUserId() == u.getUserId()) {
contains = true;
break;
}
}
您不能将列表中的contains与
User
对象及其属性一起使用,即User.userId
或User.email
最好重写User
类中比较属性的equals
方法,如下所示:
@Override
public boolean equals(Object obj) {
User other = (User) obj;
if (userId == null) {
if (other.userId != null)
return false;
} else if (!userId.equals(other.userId))
return false;
if (userName == null) {
if (other.userName != null)
return false;
} else if (!userName.equals(other.userName))
return false;
return true;
}
然后使用包含作为
userdata.contains(u)
请注意,您应该使用instanceof
运算符或Class.equals
方法,而不是使用字符串检查简单的名称是否相等
userdata.get(一些索引).getUserName.equals(u.getUserName())代码>
或者,如果要扫描整个ArrayList,请在for循环中使用此行
for (User user : userdata) {
if(user.getUserName().equals(u.getUserName())) {
return true;
}
}
注意,我假设username属性有一个getter,因此您的程序看起来像文件?@raghavenderredy No。它包含用户。List userdata=new ArrayList();我想知道数组列表中存在哪些属性,我可以实现这一点吗?将传递的对象与列表中的对象进行比较,如果o==null,则返回true?e==null:o.equals(e)
(即两个对象必须相等)。实现这一点的最佳方法是遍历列表,将列表中对象的getUserId
与u.getUserId()
进行比较。我用这种方法尝试了(User users1:userdata){if(userdata.contains(users1.getEmailId()){System.out.println(“Name:”;}}即使它不起作用,我也添加了一个可能的解决方案我想获取存储在arraylist中的属性我不想要值,假设我的用户类有10个属性,但在arraylist中我只添加了3个属性,我想知道我在arraylist中添加了哪些属性