一道JAVA经典面试题目的两种解法

题目要求:String s="-1 2 5 78 129 -65 -23";将字符串进行升序排序后输出。

方法一:使用数组进行排序

思路:

   1、获取字符串中的数值;
   2、将数组存入整型数组中;
   3、对int数组进行排序;
   4、将int数组变成字符串;
步骤:
   1、切割;
   2、对字符串数组中元素进行转化存入;
   3、对int数组进行sort;
   4、把int数组变成字符串;

源代码如下:

 1 /**
 2 *@date:2013年9月25日 
 3 *@author:lkx
 4 /
 5 /*
 6 练习:String s=“-1 28  72 104 -98 12”
 7 题目:将字符串进行升序排序后输出生成新的字符串
 8 思路:1、获取字符串中的数值;
 9       2、将数组存入整型数组中;
10       3、对int数组进行排序;
11       4、将int数组变成字符串;
12 步骤:
13       1、切割;
14       2、对字符串数组中元素进行转化存入;
15       3、对int数组进行sort;
16       4、把int数组变成字符串;
17 */
18 
19 import java.util.*;
20 class Face 
21 {   
22     /*
23     将字符串通过空格切割成字符数组
24     */
25     public static String[] getStrArray(String str)
26     {
27       return str.split(" ");
28     }
29     /*
30     将字符数组转化为整型数组
31     */
32     public static int[] toIntArray(String[] str)
33     {
34     int [] intArray=new int[str.length];
35     for(int i=0;i<str.length;i++)
36     {
37     intArray[i]=Integer.parseInt(str[i]);
38     }
39     return intArray;
40     }
41     /*
42     将排序后的整型数组转化为字符串
43     */
44     public  static String toStingArray(int[] num)//整型数组转化成字符串 
45     {
46     StringBuilder sb=new StringBuilder();
47     for(int i=0;i<num.length;i++)
48         {
49         if(i!=num.length-1)
50            sb.append(num[i]+",");
51         else
52            sb.append(num[i]);
53         }
54     return sb.toString();
55     }
56 
57     public static void main(String[] args) 
58     {
59         String s="-1 2 5 78 129 -65 -23";
60         String [] str=getStrArray(s);
61         int[] num=toIntArray(str);
62         Arrays.sort(num);   
63         String y=toStingArray(num);
64         System.out.println(y);
65     }
66 }

方法二:使用集合框架TreeSet

原解法虽然思路清晰,按部就班,便于理解,但是代码略长,一个简单的功能用了将近70行代码,
为什么我们不换一种思路,用集合框架强大的容器功能实现这一程序呢。

源代码如下:

 

 1 /**
 2 *@Date:2013年9月28日
 3 *@author:lkx
 4 */
 5 /*练习:String s=“-1 28  72 104 -98 12”
 6   题目:将字符串进行升序排序后输出生成新的字符串
 7 */
 8 import java.util.*;
 9 class StringSort 
10 {   
11     //将字符串通过空格切割成字符数组
12     public static String[] getStrArray(String str){
13       return str.split(" ");
14     }
15     //用集合框架TreeSet容器存放数据
16     public static void TreeSetSave(String []num){
17         TreeSet ts=new TreeSet();
18         for (int i=0;i<num.length;i++ ){
19             ts.add(Integer.parseInt(num[i]));
20             /*TreeSet类底层数据结构为红黑树,可对实现了Comparable接口
21               的元素(本例中为Integer)进行自然排序*/
22         }
23         for(Iterator it=ts.iterator();it.hasNext();)//使用迭代器输出
24         System.out.println(it.next());
25         }
26     public static void main(String[] args) {   
27         String s="-1 2 5 78 129 -65 -23";
28         String []num=getStrArray(s);
29         TreeSetSave(num);
30     }
31 }

 

 

 

 

转载于:https://www.cnblogs.com/lkxsnow/p/3342535.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值