我在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" 我找不到错误。
答案 0 :(得分:1)
int index = Arrays.asList(people).indexOf("Pascol");
Pascol
此处为String
,但数组中的对象为Person
类型对象。因此,indexOf
方法无法将String
与Person
匹配。您需要覆盖equals()
和hashcode()
,并将Person
类型参数传递给名称为indexOf
的{{1}}。当然我假设你的对象的相等性仅取决于name属性。
答案 1 :(得分:1)
问题是你有一个Person
个对象的列表。当您致电.indexOf("Pascol");
时,您会传递String
。将Person
与String
进行比较将始终返回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;在人类