2017-2018-2 20165312 课下选做 MySort
2024-10-08 03:56:12
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类型,这就涉及到数据类型转换的问题,有关int和Integer的用法和区别,我找到了学姐的一篇博客
最新文章
- 实体类和DataTable的转换
- Mac 终端 Linux 命令总结(简单命令)
- 使用Navicat连接Oracle数据时的一些问题,连接时错误:ORA-28547,新建用户后连接时错误:ORA-01017
- +Load和+initialize方法解析
- ASP.NET Razor - C# 逻辑条件
- phpcms v9 数据库操作函数
- substr — 详解
- Yii2 初体验
- 匿名函数和Lambda表达式
- 移动设备、手机浏览器Javascript滑动事件代码
- 文成小盆友python-num4 装饰器,内置函数
- C实现二叉树(模块化集成,遍历的递归与非递归实现)
- 云服务器内,nginx安装部署,Xshell,Xftp安装
- SpringBoot通过RedisTemplate执行Lua脚本
- 啊哈算法第四章第三节 层层递进-广度优先搜索 java实现
- linux五种I/O模型
- Some interesting facts about static member functions in C++
- magento中根据用户的id获取用户的所有订单以及每个订单中的物品 以及物品的相关属性
- AUC和ROC
- Help Jimmy POJ - 1661 数字三角DP
热门文章
- ECharts4简单入门
- oracle中日期类型 to_date 和to_timestamp什么区别啊?
- 【HTML入门基础知识】从零开始,我要加油!---致HTML
- Vue(三) v-bind 及 class 与 style 绑定
- jquery 获取表单的内容以JSON对象形式返回
- vue-router进阶-2-路由原信息
- Linux下实现ssh免密认证
- makeObjectsPerformSelector对数组中的对象发送消息执行对象中方法
- 创建Java多线程的两种方式和线程异常
- SpringCloud使用Feign调用服务时,@FeignClient注解无法使用