为什么我的Collections.binarySearch不起作用?

时间:2015-09-15 04:01:43

标签: java collections

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?我的代码或我的理解是否有问题?

由于

1 个答案:

答案 0 :(得分:1)

如果在ArrayList中找到,则此方法返回要搜索的值的索引。否则returns (- (X) - 1)其中X是插入搜索值的索引。
          (即)比搜索值更大的第一元素的索引           或ArrayList.size(),如果ArrayList的所有元素都较少           而不是搜索值。