【資料】Arraylist中根據指定元素屬性排序

cjz010發表於2009-05-21

【本文來自網際網路】
        一個Arraylist<point>,裡面包含point類的多個物件,而每一個Point 裡由(x,y,z) 的double 值構成。 如何才能讓Arraylist按照指定的double 值的大小重新排列。

例子程式如下:

 

Code:
  1. package cjz.test;   
  2. import java.util.*;   
  3.   
  4.   
  5. public class test {   
  6.     public static void main(String[] args) {   
  7.         List<Point> points=new ArrayList<Point>();   
  8.         Point point1=new Point();   
  9.         point1.setX(1324);   
  10.         point1.setY(345);   
  11.         point1.setZ(436);   
  12.         points.add(point1);   
  13.            
  14.         Point point2=new Point();   
  15.         point2.setX(23);   
  16.         point2.setY(8941.656);   
  17.         point2.setZ(431412);   
  18.         points.add(point2);   
  19.            
  20.         Point point3=new Point();   
  21.         point3.setX(786584);   
  22.         point3.setY(23452);   
  23.         point3.setZ(43563);   
  24.         points.add(point3);   
  25.            
  26. //根據X排序   
  27.         Collections.sort(points,new SortByX());   
  28.         for(Point p:points) {   
  29.             System.out.print(p.getX()+"/t"+p.getY()+"/t"+p.getZ());   
  30.             System.out.println();   
  31.         }    
  32.   
  33. //根據Y排序    
  34. //      Collections.sort(points,new SortByY());    
  35. //    
  36. //      for(Point p:points){    
  37. //          System.out.print(p.getX()+"/t"+p.getY()+"/t"+p.getZ());    
  38. //          System.out.println();    
  39. //      }    
  40.   
  41. //根據Z排序    
  42. //      Collections.sort(points,new SortByZ());    
  43. //    
  44. //      for(Point p:points){    
  45. //          System.out.print(p.getX()+"/t"+p.getY()+"/t"+p.getZ());    
  46. //          System.out.println();    
  47. //      }    
  48.     }   
  49. }    
  50.   
  51. class Point {   
  52.     private double x;    
  53.     private double y;    
  54.     private double z;    
  55.        
  56.     public double getX() {    
  57.         return x;    
  58.     }   
  59.        
  60.     public void setX(double x) {   
  61.         this.x = x;    
  62.     }    
  63.        
  64.     public double getY() {   
  65.         return y;    
  66.     }    
  67.        
  68.     public void setY(double y) {    
  69.         this.y = y;    
  70.     }   
  71.        
  72.     public double getZ() {    
  73.         return z;    
  74.     }   
  75.        
  76.     public void setZ(double z) {    
  77.         this.z = z;    
  78.     }   
  79.        
  80.     public Point(){   
  81.     }    
  82. }    
  83.   
  84. //根據X排序    
  85. class SortByX implements Comparator {    
  86.     public int compare(Object obj1,Object obj2){    
  87.         Point point1=(Point)obj1;    
  88.         Point point2=(Point)obj2;    
  89.         if(point1.getX()>point2.getX())    
  90.             return 1;    
  91.         else    
  92.             return 0;    
  93.     }    
  94. }    
  95.   
  96. //根據Y排序    
  97. class SortByY implements Comparator {    
  98.     public int compare(Object obj1,Object obj2){    
  99.         Point point1=(Point)obj1;    
  100.         Point point2=(Point)obj2;    
  101.         if(point1.getY()>point2.getY())    
  102.             return 1;    
  103.         else    
  104.             return 0;    
  105.     }    
  106. }    
  107.   
  108. //根據Z排序    
  109. class SortByZ implements Comparator {    
  110.     public int compare(Object obj1,Object obj2){    
  111.         Point point1=(Point)obj1;    
  112.         Point point2=(Point)obj2;    
  113.         if(point1.getZ()>point2.getZ())    
  114.             return 1;    
  115.         else    
  116.             return 0;    
  117.     }    
  118. }   

 

相關文章