排序:Collections.sort()
(1)自然排寻(natural ordering );
(2)实现比较器(Comparator)接口。
取最大和最小的元素:Collections.max()、Collections.min()。
在已排序的List中搜索指定的元素:Collectons.binarySearch()。
import
java.util.
*
;
public class ArrayListTest1
... {
public static void printElements(Collection c)
...{
Iterator it=c.iterator();
while(it.hasNext())
...{
System.out.println(it.next());
}
}
public static void main(String[] args)
...{
ArrayList al=new ArrayList();
al.add(new Student(2,"wanhhu"));
al.add(new Student(3,"huaihua"));
al.add(new Student(4,"liming"));
al.add(new Student(5,"zhanghu"));
printElements(al);
Collections.sort(al,new Student.StudentComparator());
printElements(al);
Collections.sort(al,Collections.reverseOrder());//new Student.StudentComparator());
printElements(al);
}
}
class Student implements Comparable
... {
int num;
String name;
static class StudentComparator implements Comparator
...{
public int compare(Object o1,Object o2)
...{
Student s1=(Student)o1;
Student s2=(Student)o2;
int result=s1.num > s2.num ? 1 : (s1.num==s2.num ? 0 : -1);
if(result==0)
...{
result=s1.name.compareTo(s2.name);
}
return result;
}
}
Student(int num,String name)
...{
this.num=num;
this.name=name;
}
public int compareTo(Object o)
...{
Student s=(Student)o;
return num>s.num ? 1 : (num==s.num ? 0 : -1);
}
public String toString()
...{
return "num="+num+","+"name="+name;
}
}
public class ArrayListTest1
... {
public static void printElements(Collection c)
...{
Iterator it=c.iterator();
while(it.hasNext())
...{
System.out.println(it.next());
}
}
public static void main(String[] args)
...{
ArrayList al=new ArrayList();
al.add(new Student(2,"wanhhu"));
al.add(new Student(3,"huaihua"));
al.add(new Student(4,"liming"));
al.add(new Student(5,"zhanghu"));
printElements(al);
Collections.sort(al,new Student.StudentComparator());
printElements(al);
Collections.sort(al,Collections.reverseOrder());//new Student.StudentComparator());
printElements(al);
}
}
class Student implements Comparable
... {
int num;
String name;
static class StudentComparator implements Comparator
...{
public int compare(Object o1,Object o2)
...{
Student s1=(Student)o1;
Student s2=(Student)o2;
int result=s1.num > s2.num ? 1 : (s1.num==s2.num ? 0 : -1);
if(result==0)
...{
result=s1.name.compareTo(s2.name);
}
return result;
}
}
Student(int num,String name)
...{
this.num=num;
this.name=name;
}
public int compareTo(Object o)
...{
Student s=(Student)o;
return num>s.num ? 1 : (num==s.num ? 0 : -1);
}
public String toString()
...{
return "num="+num+","+"name="+name;
}
}