循环中包含对象的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生成):
要在列表中查找用户类,必须覆盖classUserClasss
中的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 );
}