import java.util.ArrayList;
import java.util.Collections;
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);
}
}
import java.util.Collections;
import java.util.Comparator;
/*输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。*/
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);
}
}