题目要求:String s="-1 2 5 78 129 -65 -23";将字符串进行升序排序后输出。
方法一:使用数组进行排序
思路:
1、获取字符串中的数值;
2、将数组存入整型数组中;
3、对int数组进行排序;
4、将int数组变成字符串;
步骤:
1、切割;
2、对字符串数组中元素进行转化存入;
3、对int数组进行sort;
4、把int数组变成字符串;
源代码如下:
/** *@date:2013年9月25日 *@author:lkx / /* 练习:String s=“-1 28 72 104 -98 12” 题目:将字符串进行升序排序后输出生成新的字符串 思路:1、获取字符串中的数值; 2、将数组存入整型数组中; 3、对int数组进行排序; 4、将int数组变成字符串; 步骤: 1、切割; 2、对字符串数组中元素进行转化存入; 3、对int数组进行sort; 4、把int数组变成字符串; */ import java.util.*; class Face { /* 将字符串通过空格切割成字符数组 */ public static String[] getStrArray(String str) { return str.split(" "); } /* 将字符数组转化为整型数组 */ public static int[] toIntArray(String[] str) { int [] intArray=new int[str.length]; for(int i=0;i<str.length;i++) { intArray[i]=Integer.parseInt(str[i]); } return intArray; } /* 将排序后的整型数组转化为字符串 */ public static String toStingArray(int[] num)//整型数组转化成字符串 { StringBuilder sb=new StringBuilder(); for(int i=0;i<num.length;i++) { if(i!=num.length-1) sb.append(num[i]+","); else sb.append(num[i]); } return sb.toString(); } public static void main(String[] args) { String s="-1 2 5 78 129 -65 -23"; String [] str=getStrArray(s); int[] num=toIntArray(str); Arrays.sort(num); String y=toStingArray(num); System.out.println(y); } }
方法二:使用集合框架TreeSet
原解法虽然思路清晰,按部就班,便于理解,但是代码略长,一个简单的功能用了将近70行代码,
为什么我们不换一种思路,用集合框架强大的容器功能实现这一程序呢。
源代码如下:
/** *@Date:2013年9月28日 *@author:lkx */ /*练习:String s=“-1 28 72 104 -98 12” 题目:将字符串进行升序排序后输出生成新的字符串 */ import java.util.*; class StringSort { //将字符串通过空格切割成字符数组 public static String[] getStrArray(String str){ return str.split(" "); } //用集合框架TreeSet容器存放数据 public static void TreeSetSave(String []num){ TreeSet ts=new TreeSet(); for (int i=0;i<num.length;i++ ){ ts.add(Integer.parseInt(num[i])); /*TreeSet类底层数据结构为红黑树,可对实现了Comparable接口 的元素(本例中为Integer)进行自然排序*/ } for(Iterator it=ts.iterator();it.hasNext();)//使用迭代器输出 System.out.println(it.next()); } public static void main(String[] args) { String s="-1 2 5 78 129 -65 -23"; String []num=getStrArray(s); TreeSetSave(num); } }