以下代码是关于对象的 二分查找 的例子,已经测试通过,执行即可。 Student 是基本比较对象类 Dichotomy 是二分法执行类 Test 是测试类 package com.dichotomy; public class Student implements Comparable<Student> { private int id; private String name; private String idCard; private String sex; private String mobile; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getIdCard() { return idCard; } public void setIdCard(String idCard) { this.idCard = idCard; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } /** * 排序控制 * @param o1 Student * @param o2 Student * @return int 返回 -1 向前移动, 1 向后移动, 0 不移动 * 这个方法需要自己进行调整,排序比较和二分查找时均使用此方法进行位置调整 * 比较时使用的key自己可以进行修改,不过要保证唯一性,否则查询出来的值会不准确 */ public int compareTo(Student o) { //不同的执行次序决定排序和查找次序不同,可以同下面的调换一下 if(this.getId() < o.getId()){ return -1; } else if(this.getId() == o.getId()){ ; } else { return 1; } //不同的执行次序决定排序和查找次序不同 int c = this.getIdCard().compareTo(o.getIdCard()); if(c != 0){ return c; } //不同的执行次序决定排序和查找次序不同 int n = this.getName().compareTo(o.getName()); if(n != 0){ return n; } return 0; } public String toString(){ StringBuffer sb = new StringBuffer(); sb.append(this.getId()).append("/t"); sb.append(this.getName()).append("/t"); sb.append(this.getIdCard()).append("/t"); sb.append(this.getMobile()).append("/t"); sb.append(this.getSex()); return sb.toString(); } }