我想从ArrayList获得indexOf的第一个名字。
这是我的bean类
public class BeanClass {
static String firstname;
String lastname;
int rollno;
public BeanClass(String firstname, String lastname, int rollno) {
super();
this.firstname = firstname;
this.lastname = lastname;
this.rollno = rollno;
}
这是主要活动
public class MainClass {
static ArrayList<BeanClass>arraylist=new ArrayList<>();
static String firstname[]={"kshitij","ravi","prakash","sunil"};
staticString lastname[]={"singh","sharma","verma","tiwari"};
staticint rollno[]={1,2,3,4};
public static void main(String[] args) {
for (int i = 0; i < firstname.length; i++) {
BeanClass bean=new BeanClass(firstname[i],lastname[i],rollno[i]);
arraylist.add(bean);
}
System.out.println(arraylist.indexOf("kshitij"));
}
}
答案 0 :(得分:2)
如果您想要获得以下名称的索引,则要声明变量
int index = 0
;
并将此行System.out.println(arraylist.indexOf("kshitij"));
替换为此代码
for (BeanClass bean: arraylist) {
if (bean.firstname.equals("kshitij")) {
System.out.println("Index is " + index);
break;
}
index++
}
它存储的名字的返回索引。我假设指数从0开始
答案 1 :(得分:1)
请注意,您的ArrayList
包含BeanClass
。它的值不是"kshitij"
,而是BeanClass
的变量之一。
您必须声明index
变量,循环ArrayList
并找到您的index
:
int index = 0; // Index variable
for (BeanClass bean: arraylist) {
if (bean.firstname.equals("kshitij")) {
System.out.println(index);
break;
}
index++;
}
输出:
1
顺便说一下,在BeanClass
中,您的变量firstname
应该不是static
,或者所有实例都会firstname
相同,然后用名字搜索它失去了意识。
重新定义您的BeanClass
:
public class BeanClass {
String firstname;
String lastname;
int rollno;
// ...
}
答案 2 :(得分:1)
如上所述:Java ArrayList IndexOf - Finding Object Index
您应该构建自己的equals
方法,以便能够使用indexOf
。
此外,您需要将BeanClass
的对象传递给indexOf
public boolean equals(Object o) {
if(!(o instanceof BeanClass)) return false;
BeanClass other = (BeanClass) o;
return (this.firstname == other.firstname && this.lastname == other.lastname );
}
答案 3 :(得分:1)
您可以在Java 8中使用IntStream
,如下所示:
IntStream.range(0, list.size())
.filter(i -> arrayList.get(i).firstname.equals("kshiij"))
.findFirst()
.getAsInt();
请记住,如果列表中未包含匹配元素,getAsInt
会抛出NoSuchElementException
。别忘了抓住它。