Java ArrayList,循环中包含对象

1 java arraylist

如何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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*ank 7

要在List中查找用户类,必须覆盖类中的equals和hash代码方法UserClasss.

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

PS eclipse和其他一些IDE可以为你生成这些方法.

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

@Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        UserClasss other = (UserClasss) obj;
        if (age != other.age)
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        return true;
    }
Run Code Online (Sandbox Code Playgroud)