collections.sort()在java程序中的應用舉例

import java.util.ArrayList;
import java.util.Collections;

import java.util.Comparator;

/*輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字爲321323。*/

public class printMinNumber {
   public static String PrintMinNumber(int [] numbers) {
       int n;
       String s="";
       ArrayList<Integer> list=new ArrayList<Integer>();
       n=numbers.length;
       for(int i=0;i<n;i++){
           list.add(numbers[i]);//將數組放入arrayList中
       }
       //實現了Comparator接口的compare方法,將集合元素按照compare方法的規則進行排序
       /*Collections.sort(list, new PriceComparator());的第二個參數返回一個int型的值,就相當於一個標誌,
       告訴sort方法按什麼順序來對list進行排序。compare(a,b)方法:根據第一個參數小於、等於或大於
       第二個參數分別返回負整數、零或正整數。*/
       /*Java中String類有一個compareTo方法,該方法返回一個int類型的數據。其比較規則是:
       拿出字符串的第一個字符與參數的第一個字符進行比較,如果兩者不等,比較結束,返回兩者的ascii差,
       即字符串的第一個字符減去參數的第一個字符的ascii碼值,比如代碼第五行的-1.如果相等,則比較第二個字符,以此類推。
       比較到最後還是相等的,方法返回值爲0。
       這裏有一點需要注意:如果兩個字符串的長度不同,並且一個字符串與另一個字符串的前面N個字符相等,
       那麼這個方法返回返回兩個字符串長度之差。比如代碼第七行返回值爲3.
       舉例如下:
       String s1 = "abcd"; 
       String s2 = "abce"; 
       String s3 = "Abc"; 
       String s4 = "abcdefg"; 
       System.out.println(s1.compareTo(s2)); 
       System.out.println(s1.compareTo(s3)); 
       System.out.println(s4.compareTo(s1)); 
       System.out.println(s4.compareTo(s2)); 
       輸出:-1 32 3 -1*/
       Collections.sort(list,new Comparator<Integer>(){
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
String s1 = o1+""+o2;
String s2 = o2+""+o1;
return s1.compareTo(s2);
}
       });
       for(int j:list){
           s+=j;
       }
       return s;
   }
   
   public static void main(String args[]){
    int[] a = {3,32,321};
    String s = PrintMinNumber(a);
    System.out.println(s);
   }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章