public class AppTest {
public static void main(String[] args) {
List<Human> humans = new ArrayList<Human>();
humans.add(new Human("A", 25));
humans.add(new Human("B", 24));
humans.add(new Human("C", 24));
System.out.println(Collections.binarySearch(humans, new Human("A", 25)));
System.out.println(Collections.binarySearch(humans, new Human("B", 24)));
System.out.println(Collections.binarySearch(humans, new Human("C", 24)));
}
}
class Human implements Comparable<Human> {
private String name;
private int age;
public Human(String name, int age) {
super();
this.name = name;
this.age = age;
}
public int compareTo(Human arg0) {
return name.compareTo(arg0.name);
}
}
输出如下:
0
1
-2
我可以知道为什么输出不是0 1 2而不是0 1 -2?我的代码或我的理解是否有问题?
由于
答案 0 :(得分:1)
如果在ArrayList中找到,则此方法返回要搜索的值的索引。否则returns (- (X) - 1)
其中X
是插入搜索值的索引。
(即)比搜索值更大的第一元素的索引
或ArrayList.size(),如果ArrayList的所有元素都较少
而不是搜索值。