如何在自定义数组列表中找到数组的索引...?

时间:2016-07-21 06:19:16

标签: java arraylist indexof

我想找到自定义数组列表的索引。 这是我的自定义数组列表:

private ArrayList<UserData> ListItems = new ArrayList<>();

UserData list = new UserData("list", "5", R.drawable.email_black, false);

UserData list1 = new UserData("list1", "3",R.drawable.text_msg, false);

UserData list2 = new UserData("list2", "2",R.drawable.phone_call, false);

ListItems.add(list);
ListItems.add(list1);
ListItems.add(list2);

我做的如下,但没有得到索引。

int m = ListItems.indexOf("list1");

UserData obj = ListItems.get(m);
String name = obj.getName();

我需要名字字符串中的list1。

3 个答案:

答案 0 :(得分:1)

indexOf方法基于参数,列表中的项目相同。由于它们不是(一个是UserData个实例而另一个是String),因此您无法使用indexOf。相反,你必须自己实现这个逻辑:

private UserData getUserDataByName(String name) {
    for (UserData item : listItems) {
        if (item.getName().equals(name)) {
            return item;
        }
    }
    // Not found, return null;
    return null;
}

答案 1 :(得分:1)

迭代您的数组列表以获取所需的数据。 做类似下面的事情:

    for (int i = 0; i < ListItems.size(); i++) {
        String userListName = ListItems.get(i).getListName();
        if(userListName.equals("list1")){
            //Do something here
        }else{
            //Nthng to do
        }
    }

答案 2 :(得分:1)

在这种情况下,您也可以使用HashMap。使用HashMap<String,UserData>,其中String将是&#34; list&#34;,&#34; list1&#34;等

前 -

map.put("list", list);