如何从bean类型数组列表中获取元素的索引

时间:2016-03-10 11:50:10

标签: java arrays list for-loop arraylist

我想从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"));
    }
}

4 个答案:

答案 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。别忘了抓住它。