如何使用Arrays.asList从数组中获取元素的索引

时间:2016-08-19 13:40:16

标签: android arrays

我在android中得到了这样的arrray,Arrays.asList的用法不同,因为我用不同的类制作了数组" Person":

 people = new Person[]{
            new Person("Python"),
            new Person("PHP"),
            new Person("Pascol"),
            new Person("PyCrust"),
            new Person("C"),
            new Person("C#"),
            new Person("C++")

    };

我以这种方式使用了Arrays.asList

 int index= Arrays.asList(people).indexOf("Pascol");
    String tags = Integer.toString(index);
    Toast.makeText(getApplication(),tags,Toast.LENGTH_SHORT).show();

但是我在吐司中获得了价值" -1" 我找不到错误。

3 个答案:

答案 0 :(得分:1)

int index = Arrays.asList(people).indexOf("Pascol");

Pascol此处为String,但数组中的对象为Person类型对象。因此,indexOf方法无法将StringPerson匹配。您需要覆盖equals()hashcode(),并将Person类型参数传递给名称为indexOf的{​​{1}}。当然我假设你的对象的相等性仅取决于name属性。

答案 1 :(得分:1)

问题是你有一个Person个对象的列表。当您致电.indexOf("Pascol");时,您会传递String。将PersonString进行比较将始终返回false。请改为

int index = -1;
for (int i = 0; i < people.length; i++) {
    if (people[i].getName().equals("Pascol")) {
        index = i;
    }
}

String tags = Integer.toString(index);
    Toast.makeText(getApplication(),tags,Toast.LENGTH_SHORT).show();

答案 2 :(得分:0)

你应该实现Comparable&lt;&gt;在人类