2017-2018-2 20165312 课下选做 MySort

题目描述

模拟实现Linux下Sort -t : -k 2的功能,参考 Sort的实现。

import java.util.*;
public class MySort1 {
public static void main(String [] args) {
String [] toSort = {"aaa:10:1:1",
"ccc:30:3:4",
"bbb:50:4:5",
"ddd:20:5:3",
"eee:40:2:20"};
System.out.println("Before sort:");
for (String str: toSort)
System.out.println(str);
Arrays.sort(toSort);
System.out.println("After sort:");
for( String str : toSort)
System.out.println(str);
}
}

首先利用API查找sort的用法

我认为比较常用的就是框中的两个方法

  • 语法: sort(选项)(参数)
  • 常用选项:
    • -b:忽略每行前面开始出的空格字符;
    • -c:检查文件是否已经按照顺序排序;
    • -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
    • -f:排序时,将小写字母视为大写字母;
    • -i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
    • -k:排序时,指定本域的开头和结尾;
    • -m:将几个排序号的文件进行合并;
    • -M:将前面3个字母依照月份的缩写进行排序;
    • -n:依照数值的大小排序;
    • -o<输出文件>:将排序后的结果存入制定的文件;
    • -r:以相反的顺序来排序;
    • -t<分隔字符>:指定排序时所用的栏位分隔字符;
    • +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

所以很容易的分析出Sort -t : -k 2是按照正数第二列的数据大小进行从小到大的排序。

想要将toSort[]数组中一个元素中的第二列分离出来,想到了使用spilt()方法。先使用API了解

同时参考了娄老师的博客中讲解String的方法,写出了MySort.java

import java.util.*;
public class MySort {
public static void main(String [] args) {
String[] toSort = {"aaa:10:1:1",
"ccc:30:3:4",
"bbb:50:4:5",
"ddd:20:5:3",
"eee:40:2:20"}; System.out.println("Before sort:");
for (String str : toSort)
System.out.println(str);
Integer[] tmp = new Integer[toSort.length]; //定义一个存放int型数据的数组
for (int i = 0; i < tmp.length; i++) {
tmp[i] = new Integer(Integer.parseInt(toSort[i].split(":")[1])); //将toSort数组的元素按照“:”分隔,并将数组第二位的数字存放入tmp数组中
//由于toSort数组中为String类型 所以需要类型转换
}
Arrays.sort(tmp);//将第二列的进行排序
System.out.println("After sort:");
for (int i = 0; i < tmp.length; i++) {
for (int j = 0; j < toSort.length; j++) {
if (Integer.parseInt(toSort[j].split(":")[1]) == tmp[i].intValue()) //判断两者是否相等
System.out.println(toSort[j]); //输出整行
}
}
}
}

运行截图

由于toSort数组为String类型,这就涉及到数据类型转换的问题,有关intInteger的用法和区别,我找到了学姐的一篇博客

最新文章

  1. 实体类和DataTable的转换
  2. Mac 终端 Linux 命令总结(简单命令)
  3. 使用Navicat连接Oracle数据时的一些问题,连接时错误:ORA-28547,新建用户后连接时错误:ORA-01017
  4. +Load和+initialize方法解析
  5. ASP.NET Razor - C# 逻辑条件
  6. phpcms v9 数据库操作函数
  7. substr — 详解
  8. Yii2 初体验
  9. 匿名函数和Lambda表达式
  10. 移动设备、手机浏览器Javascript滑动事件代码
  11. 文成小盆友python-num4 装饰器,内置函数
  12. C实现二叉树(模块化集成,遍历的递归与非递归实现)
  13. 云服务器内,nginx安装部署,Xshell,Xftp安装
  14. SpringBoot通过RedisTemplate执行Lua脚本
  15. 啊哈算法第四章第三节 层层递进-广度优先搜索 java实现
  16. linux五种I/O模型
  17. Some interesting facts about static member functions in C++
  18. magento中根据用户的id获取用户的所有订单以及每个订单中的物品 以及物品的相关属性
  19. AUC和ROC
  20. Help Jimmy POJ - 1661 数字三角DP

热门文章

  1. ECharts4简单入门
  2. oracle中日期类型 to_date 和to_timestamp什么区别啊?
  3. 【HTML入门基础知识】从零开始,我要加油!---致HTML
  4. Vue(三) v-bind 及 class 与 style 绑定
  5. jquery 获取表单的内容以JSON对象形式返回
  6. vue-router进阶-2-路由原信息
  7. Linux下实现ssh免密认证
  8. makeObjectsPerformSelector对数组中的对象发送消息执行对象中方法
  9. 创建Java多线程的两种方式和线程异常
  10. SpringCloud使用Feign调用服务时,@FeignClient注解无法使用