Java工具类排序

Java工具类排序

一、直接调用工具类

sort(排序目标,排序算法),这个方法直接来自Collections工具类;

  Collections.sort(list);//自然顺序的升序进行排序

Collections.sort(al, new Comparator<Interval>() {

public int compare(Interval b1, Interval b2) {

  return b1.start - b2.start;//用匿名类的方式做好1,0,-1规则

}

});

二、在实体中实现Comparable接口,接口方法中做好1,0,-1规则,结合conllections.sort();使用即这里之后直接用这个方法即可不需再写规则

public class User implements Comparable<Object>{

    int id;

    String name;

   @Override

    public int compareTo(Object o) {

        if(this ==o){

            return 0;            

        }

        else if (o!=null && o instanceof User) {   

            User u = (User) o; 

            if(id<=u.id){

                return -1;

            }else{

            return 1;

        }

    }else{

        return -1;

    }

}

    }

public class Test {

    // 编写Comparator,根据User的id对User进行排序

    private static final Comparator<User> COMPARATOR = new Comparator<User>() {

        public int compare(User o1, User o2) {

            return o1.compareTo(o2);// 运用User类的compareTo方法比较两个对象

        }

    };

    public static void main(String[] args) {

        ArrayList<User> student = new ArrayList<User>();

        User user1 = new User(1, "yueliming");

        User user2 = new User(5, "yueliming");

        User user3 = new User(2, "yueliming");

        student.add(user1);

        student.add(user2);

        student.add(user3);

        Collections.sort(student, COMPARATOR);// 用我们写好的Comparator对student进行排序

        for (int i = 0; i < student.size(); i++) {

            System.out.println(student.get(i).getId() + student.get(i).getName());

        }

    }

}

三、比for循环高效一点的搜素

binarySearch 

使用二分搜索法搜索指定列表,以获得指定对象。

binarySearch(List(T) list) 

注意:在进行此调用之前,必须根据列表元素的自然顺序对列表进行升序排序(通过 sort(List) 方法)。

binarySearch(List(T) list,Comparator()) 

注意:在进行此调用之前,必须根据指定的比较器对列表进行升序排序(通过 sort(List, Comparator) 方法)///之前没有排序的list这里还是要排序

 public static void demo() 

    {

        List<String> list=new ArrayList<String>();

        list.add("abcd");

        list.add("aaaaa");

        list.add("23415");

        list.add("qq");

        list.add("abcd");

        list.add("23410");

        list.add("mmm");

        list.add("abcd");

        Collections.sort(list);//自然顺序的升序进行排序

        //Collections.sort(list,new StrlenComparator());//必须先排序

        sop(list);

        int index_1=Collections.binarySearch(list,"qq");//若不存在返回的是最后查找的插入点

        int index_2=halfSerch2(list,"23400",new StrlenComparator());//调用比较器比较

        sop("index_1="+index);  

        sop("index_2="+index_2);                        

    }