循环中包含对象的Java ArrayList

循环中包含对象的Java ArrayList,java,arraylist,Java,Arraylist,在循环中声明ArrayList中的对象时,如何知道该对象的名称? 我可以通过索引获取它,但我不知道它的名称,无法定位/知道它是否在ArrayList中 import java.util.ArrayList; public class Teste { public static void main(String[] args) { ArrayList<UserClasss> userList = new ArrayList<UserClasss>

在循环中声明
ArrayList
中的对象时,如何知道该对象的名称? 我可以通过索引获取它,但我不知道它的名称,无法定位/知道它是否在
ArrayList

import java.util.ArrayList;

public class Teste {

    public static void main(String[] args) {
        ArrayList<UserClasss> userList = new ArrayList<UserClasss>();

        for (int i = 0; i < 5; i++) {
            UserClasss user = new UserClasss();
            user.setName("name"+i);
            user.setAge((int)(Math.random()*80));
            userList.add(user);
        }
        for (UserClasss forUser:userList){
            System.out.println(forUser.getName());
            System.out.println(forUser.getAge());
        }


        //how can i know if contains it here?
        //userList.contains(user);
        //and how do i know the index of it?
        //userList.indexOf(user);


    }
}

class UserClasss {

    private String name;
    private int age;

    public void setName(String s){
        name = s;
    }
    public String getName(){
        return name;
    }
    public void setAge(int i){
        age = i;
    }
    public int getAge(){
        return age;
    }
}
import java.util.ArrayList;
公共类测试{
公共静态void main(字符串[]args){
ArrayList userList=新的ArrayList();
对于(int i=0;i<5;i++){
UserClasss user=newuserclasss();
user.setName(“name”+i);
user.setAge((int)(Math.random()*80));
添加(用户);
}
for(UserClasss for用户:userList){
System.out.println(forUser.getName());
System.out.println(forUser.getAge());
}
//我怎么知道这里有没有?
//包含(用户);
//我怎么知道它的索引?
//userList.indexOf(用户);
}
}
类用户类{
私有字符串名称;
私人互联网;
公共void集合名(字符串s){
name=s;
}
公共字符串getName(){
返回名称;
}
公共无效设置(int i){
年龄=i;
}
公共整数getAge(){
回归年龄;
}
}

要在列表中查找用户类,必须覆盖类
UserClasss
中的equals和hash code方法

通过这样做,contains()和indexOf()方法将能够在
集合中找到它们

eclipse和其他一些IDE可以为您生成这些方法

要添加的代码(由eclipse生成):


要在列表中查找用户类,必须覆盖class
UserClasss
中的equals和hash-code方法

通过这样做,contains()和indexOf()方法将能够在
集合中找到它们

eclipse和其他一些IDE可以为您生成这些方法

要添加的代码(由eclipse生成):

您可以使用contains()和indexOf(),但是您的UserClass应该有一个equals()方法

如果obj等于自身,则返回true。在您的情况下,您应该比较名称

public boolean equals(Object obj) {
   if (! (obj instanceof UserClass) {
      return false;
   }
   return this.name.equals((UserClass)obj).name );
}
当然,您可以比较所有需要的属性。

您可以使用contains()和indexOf(),但是您的用户类应该有一个equals()方法

如果obj等于自身,则返回true。在您的情况下,您应该比较名称

public boolean equals(Object obj) {
   if (! (obj instanceof UserClass) {
      return false;
   }
   return this.name.equals((UserClass)obj).name );
}

当然,你可以比较你想要的所有属性。

重写
hashCode()
equals()
总是好的,而不仅仅是一个。重写
hashCode()
equals()
总是好的,而不仅仅是一个
public boolean equals(Object obj) {
   if (! (obj instanceof UserClass) {
      return false;
   }
   return this.name.equals((UserClass)obj).name );
}