J2SE第七章——集合框架(容器)三

来源:互联网 发布:表达很牛的网络用语 编辑:程序博客网 时间:2024/05/17 06:17

4. Collections

         类java.util.Collections提供了一些静态方法基于List容器的一些算法

                   排序 voidsort(List)

                   逆序  void reverse(List)

                   随机  void shuffle(List)

                   折半查找 (先升序排列) intbinarySearch(List,Object) 

public class Test { public static void main(String[] args) {m1();}public static void m1()  {List list = new Arraylist();for (int i=0;i<5;i++) {//Random类,产生随机数Random r = new Random();//nextInt(int n) 产生0~n-1之间的随机整数list.add(r.nextInt(100));}System.out.println("原始数据"+list);Collections.sort(list);System.out.println("sort:"+list); // 默认升序Collections.reverse(list);  // 逆序System.out.println("reverse:"+list); // 降序Collections.shuffle(list); // 随机排序System.out.println("shuffle:"+list); }}

5.comparable接口

         java.lang.Comparable 不用导入

public class Test {public static void main(String[] args) {m1();m2();}public static void m1() {List list = new ArrayList();list.add("Tom");list.add("Mike");list.add("Joke");Collections.sort(list);System.out.println(list);  // [Joke Mike  Tom]}public static void m2() {List list = new ArrayList();list.add(new Person("zhang","san"));list.add(new Person("li","si"));list.add(new Person("wang","wu"));Collections.sort(list);System.out.println(list);  //抛异常了~!}}

 出错的原因:sort()排序方法,排序即比较排序对象的“大小, 那么sort()抛异常,可能的原因是不能确定待排序对象的“大小”

         为什么不知道大小:

                   约定如果“对象”之间比较大小,那么该对象所属的类必须实现comparable接口

                   并重写booleancomparaTo()方法

                   也就是说两个对象大小的比较,由comparaTo()的返回值决定

                   即String类实现了Comparable接口,并实现了comparaTo(),在该方法中定义了两个字符串对象大小的比较

源码:public int comparaTo(String anotherString) {< 0  当前对象 小于 参数对象= 0  当前对象 等于 参数对象> 0  当前对象 大于 参数对象}

class Person implements Comparable {private String firstName;private String lastName;public Person(String firstName,String lastName) {this.firstName = firstName;this.lastName = lastName;}public int comparaTo(Object antherPerson) {Person antherPerson = (Person) obj;if (firstName.comparaTo(antherPerson.firstName) == 0) {return lastName.comparaTo(antherPerson.lastName);} else {return firstName.comparaTo(antherPerson.firstName);}}public String toString() {return firstName + "," + lastName;  }}


0 0