题目要求: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);
     }
 }

一道JAVA经典面试题目的两种解法的更多相关文章

  1. C语言经典面试题目(转的,不过写的的确好!)

    第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一 ...

  2. 33条C#、.Net经典面试题目及答案

    33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如".NET中类和结构的区别"."ASP.NET页面之间传递值的几种方式? ...

  3. 33条C#、.Net经典面试题目及答案[zt]

    33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如“.NET中类和结构的区别”.“ASP.NET页面之间传递值的几种方式?”,并简明扼要的给出了答案,希 ...

  4. 经典面试题目——250M内存处理10G大小的log文件

    前言 周末逛知乎的时候,看到的一个经典面试题目:http://www.zhihu.com/question/26435483.非常经典的一道分而治之的题目. 题目描写叙述例如以下: 有次面试遇到一个问 ...

  5. Java中HashMap遍历的两种方式

    Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...

  6. java中数组复制的两种方式

    在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...

  7. java动态获取WebService的两种方式(复杂参数类型)

    java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...

  8. Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】

    []如何区分是需要使用SFTP还是FTP? []我觉得: 1.看是否已知私钥. SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了用户名和密码外还需要知道 ...

  9. Java描述表达式求值的两种解法:双栈结构和二叉树

    Java描述表达式求值的两种解法:双栈结构和二叉树 原题大意:表达式求值 求一个非负整数四则混合运算且含嵌套括号表达式的值.如: # 输入: 1+2*(6/2)-4 # 输出: 3.0 数据保证: 保 ...

随机推荐

  1. 龙芯将两款 CPU 核开源,这意味着什么?

    10月21日,教育部计算机类教学指导委员会.中国计算机学会教育专委会将2016 CNCC期间在山西太原举办“面向计算机系统能力培养的龙芯CPU高校开源计划”活动,在活动中,龙芯中科宣布将GS132和G ...

  2. (转)Spring的编程式事务例子

    纯JDBC操作, 对某些项目来说, 也许更好, Spring JDBC Framework让你不用关心Connection, Statement, ResultSet. 定义数据源 spring事务编 ...

  3. Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

    1.操作基本数据类型的流     1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...

  4. js、javascript正则表达式验证身份证号码

    function isCardNo(card) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{1 ...

  5. C#编写媒体播放器--Microsoft的Directx提供的DirectShow组件,该组件的程序集QuartzTypeLib.dll.

    使用C#编写媒体播放器时,需要用到Microsoft的Directx提供的DirectShow组件.用该组件前需要先注册程序集QuartzTypeLib.dll. 1.用QuartzTypeLib.d ...

  6. Android中常见的MVC模式

    MVC模式的简要介绍 MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller). MVC模式的目的就是实现Web系统的职能分工. Model层实现系统中的业务 ...

  7. 网站常见问题及解决方法(div/css)

    18.<a> 在IE6,7 下面重新定义宽和高的代码:{  display:block; display:-moz-inline-stack; display:inline-block;  ...

  8. ASP.NET MVC从客户端中检测到有潜在危险的 Request.Form 值

    ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值 “/”应用程序中的服务器错误. 从客户端(Content=" sdfdddd ...&quo ...

  9. 淘宝技术发展(Java时代:脱胎换骨)

    我的师父黄裳@岳旭强曾经说过,“好的架构图充满美感”,一个架构好不好,从审美的角度就能看得出来.后来我看了很多系统的架构,发现这个言论基本成立.那么反观淘宝前面的两个版本的架构,你看哪个比较美? 显然 ...

  10. MYSQL的分区字段,必须包含在主键字段内

    MYSQL的分区字段,必须包含在主键字段内   MYSQL的分区字段,必须包含在主键字段内 在对表进行分区时,如果分区字段没有包含在主键字段内,如表A的主键为ID,分区字段为createtime ,按 ...