为对象数组进行排序 --- Arrays.sort(Object[bean])

简要说明:

将需要排序的类实现Comparable接口,重写compareTo方法。

进而实现对象数组排序(升序降序)

 

 

----------------------------------------------------------------------------------------------------------------------------------

注:升序时,将重写的compareTo方法 return 结果对调

 

public int compareTo(impl_Comparable o) {
		……………………
		if (n > 0) {
			// 当方法返回 1 时 :把参数对象往前放。(前o.date , 后this.date)
			return 1;
		} else {
			// 当方法返回 -1 时:把参数对象往后放。(前this.date , 后o.date)
			return -1;
		}
	}

----------------------------------------------------------------------------------------------------------------------------------

 

 

追加一种实现方式:

 

----------------------------------------------------------------------------------------------------------------------------------

import java.text.ParseException;  
import java.text.SimpleDateFormat;  
import java.util.Arrays;  
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;  
import java.util.List;

//实现Comparable接口,使该类的对象可排序  
public class Impl_Comparable {  
  
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  
    // 该类的属性Date  
    public Date date = new Date();  
  
    public Impl_Comparable(String str) {  
        try {  
            date = sdf.parse(str);  
        } catch (ParseException e) {  
        }  
    }  
  
    // 重载toString方法定义输出  
    public String toString() {  
        return sdf.format(date);  
    }  
      
    public static void main(String[] args) {
        // 建立一个数组, 元素为3个TestComparable对象  
        Impl_Comparable[] c = new Impl_Comparable[] {   
                new Impl_Comparable("2012-07-12"),  
                new Impl_Comparable("2012-07-1"),  
                new Impl_Comparable("2012-12-12"),   
                new Impl_Comparable("2016-07-12"),   
                new Impl_Comparable("2016-08-12"),   
                new Impl_Comparable("2016-07-31"),   
                new Impl_Comparable("1989-05-01")  
                };  
        List<Impl_Comparable> list = Arrays.asList(c);
        
        // 排序前  
        System.out.println(list);  
        // 排序  
        Collections.sort(Arrays.asList(c), new Comparator<Impl_Comparable>(){
			public int compare(Impl_Comparable o1,Impl_Comparable o2) {
				 // 当o1.date大于o2.date时间,即n>0  
		        long n = o1.date.getTime() - o2.date.getTime();  
		        if (n > 0) {  
		            // 当方法返回 -1 时:把参数对象往后放。(前o1.date , 后o2.date)  
		            return -1;  
		        } else {  
		            // 当方法返回 1 时 :把参数对象往前放。(前o2.date , 后o1.date)  
		            return 1;  
		        }  
			}			
		});
        // 排序后  
        System.out.println(list);  
    }  
}  

 

----------------------------------------------------------------------------------------------------------------------------------

 

 

代码说明:

实例为,按降序排列对象的date属性。


package Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

//实现Comparable接口,使该类的对象可排序
public class impl_Comparable implements Comparable<impl_Comparable> {

	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

	// 该类的属性Date
	public Date date = new Date();

	public impl_Comparable(String str) {
		try {
			date = sdf.parse(str);
		} catch (ParseException e) {
		}
	}

	//  实现Comparable接口,按降序排列 date
	public int compareTo(impl_Comparable o) {
		
		// 当this.date大于o.date时间,即n>0
		long n = date.getTime() - o.date.getTime();
		if (n > 0) {
			// 当方法返回 -1 时:把参数对象往后放。(前this.date , 后o.date)
			return -1;
		} else {
			// 当方法返回 1 时 :把参数对象往前放。(前o.date , 后this.date)
			return 1;
		}
	}

	// 重载toString方法定义输出
	public String toString() {
		return sdf.format(date);
	}
	
	public static void main(String[] args) {
		// 建立一个数组, 元素为3个TestComparable对象
		impl_Comparable[] c = new impl_Comparable[] { 
				new impl_Comparable("2012-07-12"),
				new impl_Comparable("2012-07-1"),
				new impl_Comparable("2012-12-12"), 
				new impl_Comparable("2016-07-12"), 
				new impl_Comparable("2016-08-12"), 
				new impl_Comparable("2016-07-31"), 
				new impl_Comparable("1989-05-01")
				};
		// 排序前
		System.out.println(Arrays.asList(c));
		// 排序
		Arrays.sort(c);
		// 排序后
		System.out.println(Arrays.asList(c));
		
	}

}

你可能感兴趣的:(object)