java中list集合中的用indexOf方法怎样实现,
public Book getbookByISBN(Book u)
{
// TODO Auto-generated method stub
int index = book.indexOf(u);
if(index!=-1)
{
return book.get(index);
}
else
{
return null;
}
}根据图书IBSN码查图书这样怎么会查不到呢,总是返回null呢?
java.util.ArrayList.indexOf(Object) 方法返回指定元素的第一个匹配项的乎漏空索引在此列表中,或者-1,如果此列表中不包含该元素。
声明搜毁
以下是java.util.ArrayList.indexOf()方法的声明
public int indexOf(Object o)
参数
o -- 要搜索的元素。
返回值
此方法返回指定元素的第一个匹配项的索引在此列表中,或者如果此列表中不包含该岁瞎元素返回-1。
因为index等于-1了。。。
你的传入参段皮数 (Book u) 是什段码么? book中放的又是什么?为啥传入一个Book又返回了握燃差一个Book
indexOf是返回列表中首次出现指定元素悔消的索引,银谨如果列表不包含此元素,则返回 -1。更正式地说,返回满足下面条件的最低索引 i:(o==null ? get(i)==null :o.equals(get(i))),如果没有这样的索引,则返回 -1。
从你的程序看显然int index 值为-1,因此返回null。
出现 为 -1 的原因:
1 、 你的程序最好使用泛型来处理碧搏知:
List <Book> book=XXX;
book.indexOf(u);
2 、仔细检查你的 List<book>是否为空 或者u 是否存在于集合中等,仔细排查。
应该是没有重写equals造成的。