且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

java Collections Arrays ArrayList 类的运用 进行对象排序

更新时间:2022-08-13 08:14:32

 

 /*
 Collections类的所有方法都是静态的 sort方法 可以为一个列表进行排序 
 List 接口从 Collection派生来的  ArrayList类实现了  List接口 所以有iterator方法
 Arrays类的sort方法是给一个数组进行排序
 Collections类封装了静态方法 对列表操作

Arrays 类可以对数组进行排序等等
 */
 import java.util.*;
 class  Test 
{  
 
  public static void  printElements(Collection c)  //用迭代器的形式输出每个元素
 {
   Iterator i= c.iterator();
   while(i.hasNext())
   System.out.println(i.next());
 
 }
 public  static  void main(String []args)
 {
  //插入Point
  ArrayList<Point>  arr1 =new ArrayList<Point>() ;
  Point p1=new Point(1,3);
  Point p2=new Point(2,7);
  Point p3=new Point(9,6);
  Point p4=new Point(4,3);
  arr1.add(p1);
  arr1.add(p2);
  arr1.add(p3);
  arr1.add(p4);
  printElements(arr1); //输出元素    
  
  
  //插入Student
   ArrayList<Student>  arr2=new ArrayList<Student>() ;
  Student s1=new Student(1,"xiaozhang"); 
  Student s2=new Student(3,"xiaoli"); 
  Student s3=new Student(2,"xiaowang"); 
   Student s4=new Student(2,"xa"); 
  arr2.add(s2);
  arr2.add(s1);
   arr2.add(s3);
   arr2.add(s4);
   // Collections.sort(arr2);  //利用Collection类的静态方法 sort进行列表的排序 
   //我们还可以定义自己的比较器 这个比较器从 Comparator接口 实现
   
  Collections.sort(arr2, Collections.reverseOrder());// Collections.reverseOrder() 函数直接返回一个反序 比较器对象  Comparator
   printElements(arr2); //输出反序排序元素      
 
 
  System.out.println("max= "+Collections.max(arr2));  //通过静态方法获得最大值
  System.out.println("min= "+Collections.min(arr2));  //通过静态方法获得最小值    
  
  
  
  
  
 }
}
class Point
{
 int  x,y;
 Point(int x,int y)
 {
  this.x=x;
  this.y=y;
 }
 public  String toString()
 {
  return "x="+x+",y="+y;
 }
}


class   Student   implements Comparable
{
 int num;
 String name;
 Student(int num,String name)
 {
  this.num=num;
  this.name=name; 
 }
 public  String toString()
 {
  return num+":"+name;
 }
 
 public int compareTo(Object o)
 {
  Student s=(Student)o;
  return num>s.num?1:(num==s.num?0:-1);
 }
 
 
 //比较器类
 static  class  StudentComparator  implements  Comparator   //内部类 比较器
 {
  public int compare(Object o1, Object o2) 
  {
   Student s1=(Student)o1;
   Student s2=(Student)o2;
    int num=s1.num>s2.num?1:(s1.num==s2.num?0:-1) ;
   if(num==0)
   {
    return s1.name.compareTo(s2.name);
   }
   
   return  num;
  }
 }
 

}