collections.sort()在java程序中的应用举例

来源:互联网 发布:μcos ii源码v2.86 编辑:程序博客网 时间:2024/05/22 20:27
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);
   }
}
0 0
原创粉丝点击