java 怎么对java字符串排序里的字符排序

         
您现在的位置:&&>&&>&&>&&>&&>&正文
Java中数字字符串排序
来源:()  【】 
&& 老师布置的一个作业要用到把文件中的各条记录按照记录中的一个字段排序,这个字段是数字字符串。本打算把字符串转成数字,再用学过的一些排序算法实现,可一想,如此强大的java,这种小小功能应该不用这么复杂的自己折腾。仔细读过书后,发现果真有捷径可走。&&& 我的思路是这样的 1.把字符串读入ArrayList,每个字符串是一项; 2.把ArrayList对象传入Collection.sort(); 3.大功告成,ArrayList中的字符串已经排好序了。 && 有几点要注意,构造ArrayList对象时,要声明类型,因为ArrayList是基于泛型实现的。如ArrayList&String& lines = new ArrayList&String&()。之所以不用转换成数字可以实现排序,是因为排序是按照ASCII码实现的,数字在ASCII码中就是从小到大排列的。&& 还有一点读写文件的知识,读写文件时,使用BufferedInputStream和BufferedOutputStream可以获得比较好的效率。应为这种读文件的方式,自己配有一个缓冲区,可以把磁盘数据缓冲到内存中。另外,读文件的时候使用CharArrayWriter可以很方便的把文件内容转换成字符串,因为文件的read()方法获得int数据(估计是为了保存各种数据方便统一吧),CharArrayWriter的对象可以接受int,利用他的toString()方法,就可以把读入的数据转换成字符串。&& 下面我给出我的实现代码,读取的文件名是main函数的参数。import java.util.*; import java.io.*; public class Sort { private BufferedInputS private BufferedOutputS Sort(String inputFile,String outputFile) { try{ File srcFile = new File(inputFile); File desFile = new File(outputFile); in = new BufferedInputStream(new FileInputStream(srcFile)); out = new BufferedOutputStream(new FileOutputStream(desFile)); } catch(IOException e){ e.printStackTrace(); } } public void sortRecord() { try{ ArrayList&String& lines = new ArrayList&String&();//保证ArrayList类型安全 CharArrayWriter writer = new CharArrayWriter(); int c = in.read(); while(c != -1) { writer.write(c); if((char)c == ‘“n‘) { String line = writer.toString(); lines.add(line); writer.reset(); } c = in.read(); } Collections.sort(lines); Iterator&String& itr = lines.iterator(); while(itr.hasNext()){ char[] buf = ((String)itr.next()).toCharArray(); for(int i=0;i&buf.i++) { out.write(buf[i]); } } out.flush();//将数据写入文件 out.close(); } catch(IOException e) { e.printStackTrace(); } } public static void main(String[] args) { Sort record = new Sort(args[0],args[1]); record.sortRecord(); } } 1&&&
文章责编:gaoxiaoliang& 看了本文的网友还看了
?&&( 15:51:47)?&&( 14:16:20)?&&( 14:14:40)?&&( 14:13:00)?&&( 14:10:55)?&&( 14:02:35)
? ?   ? ?   ? ?   ? ?   ? ?
? ?   ? ?   ?
?   ? ?    ? ?   ? ?   ? ?   ? ?
? ?   ? ?
实用工具 |
| 大全 | 大全
     |
版权声明:如果网所转载内容不慎侵犯了您的权益,请与我们联系,我们将会及时处理。如转载本内容,请注明出处。
Copyright & 2004-
 网 All Rights Reserved 
中国科学院研究生院权威支持(北京) 电 话:010- 传 真:010-&讨论向...& 利用冒泡排序的思想对符合格式的时间字符串进行排序【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:663,451贴子:
&讨论向...& 利用冒泡排序的思想对符合格式的时间字符串进行排序收藏
欢迎大家一起讨论下。。。。。。今天在写JSP的时候想对数据库的数据按照时间的顺序进行排序,当然在数据库里面会很方便的的用SQL语句进行排序 比如MYSQL中 你可以使用&Select *from 表名 order by uploadtime desc&这条语句 将数据库中所有的数据按照上传文件的时间进行降序排列。后来突发奇想 如果纯粹使用java语言的话 该如何实现这个功能?仔细想了一下大概的思路,然后在myeclipse里面将自己的想法实现了以下,现在记录一下总结一下:整个程序大概的思想就是 使用冒泡排序的思想进行排序,这里再一次证明了基础是多么的重要,很多同学都抱怨为什么SSH三大框架学起来这么费劲,其实这些框架,不对几乎所有的框架都是对基础的功能进行封装,达到方便使用的目的,如果你连基础都不牢固 当然学起来费劲,如果你对基础学得好,这些所谓的框架都是一些纸老虎罢了,这里扯远了....好了继续上面的话题,整个程序主要就是使用了冒泡排序的思想,看了一下其中涉及到的java基础知识真心不少,在脑子构思的时候觉得挺简单的,但是真正写起来的时候发现很多地方都犯了小错误,花了点时间才最终搞定。涉及的知识点:------ 冒泡排序法------ 二维数组的基础知识------ 函数的引用传递跟值传递(写的时候就忽略这个问题
)真的都是非常基础的东西,好了废话不多了,上代码吧 关键的地方都做了注释了说明:
1.关于解析字符串的格式问题,推荐使用 hh:mm:ss的格式,为什么? 因为简单易懂啊,当然你也可以使用其他的格式进行解析 但是要注意分隔符最好不要用特殊字符,很多同学用特殊字符容易出错,这里归根结底还是因为 split这个函数,虽然强大但是问题也多,容易出问题2. 可以用SimpleDateFormat讲任意的字符串进行处理 转换成你想要的格式,如上面hh:mm:ss的格式3. swap函数一定要注意值传递还是引用传递的问题,注意值传递还是引用传递的问题 ,注意值传递还是引用传递的问题 这个很多新手都不会注意,然后检查了半天找不到错误,重要的事情说三遍!!!!!!!!!!!!!!该说的基本上都说了,有兴趣的同学可以试试,源码已经运行通过,程序还可以优化,但是因为时间问题就这样吧 有问题的同学可以留学 我会及时回复[java] view plainpackage com.orsay.
import java.text.SimpleDateF
public class Demo1 {
* 解析字符串成整型数组
public static int[] inverter(String[] str) {
int[] time = new int[str.length];
for (int i = 0; i & str. i++) {
time[i] = Integer.valueOf(str[i]);
* 封装但一定格式打印二维数组的函数
public static void sys(int[][] arr) {
for (int i = 0; i & arr. i++) {
int[] num = arr[i];
for (int j = 0; j & num. j++) {
System.out.print(num[j] + &\t&);
System.out.println();
// swap函数,交换顺序,这里注意值传递跟引用传递的区别
public static void swap(int[][] ar0, int ar1, int ar2) {
int[] temp = ar0[ar2];
ar0[ar2] = ar0[ar1];
ar0[ar1] =
public static void main(String[] args) {
// TODO Auto-generated method stub
// 时间字符串解析成整形数组
int[] t1 = inverter(new String(&18:00:40&).split(&:&));
int[] t2 = inverter(new String(&10:00:40&).split(&:&));
int[] t3 = inverter(new String(&19:20:50&).split(&:&));
int[] t4 = inverter(new String(&10:50:00&).split(&:&));
int[] t5 = inverter(new String(&19:05:00&).split(&:&));
// 讲解析后的字符串放入二维数组中
int[][] Time = { t1, t2, t3, t4, t5 };
sys(Time);
System.out.println(&-------------排序中--------------&);
// 冒泡排序的思想实现对二维时间数组进行排序
for (int i = 0; i & Time. i++) {
for (int j = i + 1; j & Time. j++) {
if (Time[i][0] & Time[j][0]) {
swap(Time, i, j);
} else if (Time[i][0] == Time[j][0]) {
if (Time[i][1] & Time[j][1]) {
swap(Time, i, j);
} else if (Time[i][1] == Time[j][1]) {
if (Time[i][2] & Time[j][2]) {
swap(Time, i, j);
System.out.println(&-------------排序后--------------&);
sys(Time);
2017java学习来上市公司博为峰学java,入学即签就业协议,不就业不收费,查看java课程!java好学吗?java课程来博为峰学,java工程师就业年薪十几万!
刚刚想了一下
开头的字符串处理其实可以用for循环进行处理的但是写的时候图方便 直接用复制改一下值
偷偷告诉楼主Date类实现了comparable借口了
登录百度帐号推荐应用君,已阅读到文档的结尾了呢~~
Java中升序降序输出String字符降序,升序,序,java,字符串,输出升序,Java,降序输出,java中,JAVA
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Java中升序降序输出String字符
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口2009年6月 挨踢职涯大版内专家分月排行榜第二2009年5月 挨踢职涯大版内专家分月排行榜第二2009年3月 挨踢职涯大版内专家分月排行榜第二2008年12月 挨踢职涯大版内专家分月排行榜第二
2009年6月 Web 开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。对list中存放的字符串组排序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
对list中存放的字符串组排序
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 java如何对字符串排序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信