一道JAVA经典面试题目的两种解法
题目要求: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经典面试题目的两种解法的更多相关文章
- C语言经典面试题目(转的,不过写的的确好!)
第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一 ...
- 33条C#、.Net经典面试题目及答案
33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如".NET中类和结构的区别"."ASP.NET页面之间传递值的几种方式? ...
- 33条C#、.Net经典面试题目及答案[zt]
33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如“.NET中类和结构的区别”.“ASP.NET页面之间传递值的几种方式?”,并简明扼要的给出了答案,希 ...
- 经典面试题目——250M内存处理10G大小的log文件
前言 周末逛知乎的时候,看到的一个经典面试题目:http://www.zhihu.com/question/26435483.非常经典的一道分而治之的题目. 题目描写叙述例如以下: 有次面试遇到一个问 ...
- Java中HashMap遍历的两种方式
Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- java动态获取WebService的两种方式(复杂参数类型)
java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...
- Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】
[]如何区分是需要使用SFTP还是FTP? []我觉得: 1.看是否已知私钥. SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了用户名和密码外还需要知道 ...
- Java描述表达式求值的两种解法:双栈结构和二叉树
Java描述表达式求值的两种解法:双栈结构和二叉树 原题大意:表达式求值 求一个非负整数四则混合运算且含嵌套括号表达式的值.如: # 输入: 1+2*(6/2)-4 # 输出: 3.0 数据保证: 保 ...
随机推荐
- *[topcoder]PalindromicSubstringsDiv2
http://community.topcoder.com/stat?c=problem_statement&pm=12967 计算一个字符串里Palindrome的数量.我的DP方法需要n^ ...
- Android:界面设计工具DroidDraw
DroidDraw是款强大的安卓界面设计软件,基于Java Swing开发,可以通过它拖动控件.设置层属性.设置颜色等步骤轻松地生成复杂的安卓XML布局文件. >>>>> ...
- 深入探索 Java 热部署
在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作.对于某些大型的应用来 ...
- 【问题】和NULL比较遇到的问题
1.问题描述: select FName from teacher where FId not in( select distinct FTeacherId from student ) 子查询返回的 ...
- OpenCV码源笔记——RandomTrees (一)
OpenCV2.3中Random Trees(R.T.)的继承结构: API: CvRTParams 定义R.T.训练用参数,CvDTreeParams的扩展子类,但并不用到CvDTreeParams ...
- 轻量级MVC标准
看到标题,估计有人就开始想吐了,没关系,你可以先吐完再看,现在MVC框架多如牛毛,没必要再重复发明轮子了,要声明的是,这里不是想要发明轮子,也没那个闲工夫去发明轮子,而是看到这么多MVC框架模样都差不 ...
- C#版二维码生成器
前言 本文所使用的二维码生成代码是谷歌开源的条形码图像处理库完成的,c#版的代码可去 这里 -- 下载压缩包. 截止目前为止最新版本为2.2,提供以下编码格式的支持: UPC-A and UPC ...
- 自定义View(5)Paint常用的一些绘制滤镜,特效等介绍
Shader 返回绘图过程中重复色块的基类 相关方法:Paint::setShader(Shader shader) BitmapShader 从位图加载重复色块 LinearGradient, Ra ...
- What's New for Visual C# 6.0
https://msdn.microsoft.com/en-us/library/hh156499.aspx nameof You can get the unqualified string nam ...
- error: dst ref refs/heads/zhCN_v0.13.1 receives from more than one src.
http://segmentfault.com/q/1010000000257571 想要把本地的分支推送到远端 git push chucklu zhCN_v0.13.1 zhCN_v0.13.1 ...