学号20175313 《实现Linux下Sort -t : -k 2功能》第十二周
一、题目要求
实现Linux下Sort -t : -k 2的功能
二、题目理解
- -t 分隔符,将每一行数据按照该选项指定的分隔符分成多个域。默认情况下是使用tab键或者空格符来分割的。
- -k 指定用哪个域的数据来进行排序
Sort -t : -k 2:即要求以冒号作为分隔符,给定数据的第二个区域的升序排列为标准,对输入数据进行排序。
三、设计思路
- 参数args[0]为用户指定作为排序标准的区域
- 用public String[]split(String regex)方法对所给字符序列进行分解
- 将分解后的arges[0]区域所包含的内容存储到k3数组中
- 调用Arrays类里面的sort方法,对指定区域进行排序,即对k3数组进行排序
- 通过遍历的方法寻找toSort数组指定区域与排好序后的k3[i]相等的toSort[j],然后将其输出
四、代码实现
- 根据已知代码模型在此基础上进行分析,写出关键部分代码:
import java.util.*;
public class MySort {
public static void main(String[] args) {
int field = Integer.parseInt(args[0])-1;
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);
}
}
}
伪代码:
- 遍历toSort这个数组,将每个字符串按照冒号进行分隔,分隔后得到的字符串保留在temp中
- 用k3数组保存指定区域所含的内容
- 遍历完后,对k3进行升序排列
- 升序输出以args[0]为关键字的toSort排序
- 寻找k3[i]相等的关键字所在的字符串位置
- 当找到之后就输出toSort
- 否则就继续遍历toSort这个数组
产品代码:对关键代码解释在注释中均已给出,这里就不作重复说明
import java.util.*;
public class MySort {
public static void main(String[] args) {
int field = Integer.parseInt(args[0])-1;
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);
}
int[] k3 = new int[toSort.length];
for (int i = 0; i < toSort.length; i++) {//遍历toSort这个数组,将每个字符串按照冒号进行分隔,分隔后得到的字符串保留在tmp中
String[] tmp = toSort[i].split(":");
k3[i] = Integer.parseInt(tmp[field]);//求field的所对应的值
}
Arrays.sort(k3);//对k3进行升序排列,要求按照第二个field进行排序,所以上面k3应该保留的是第二个field的值
System.out.println("After sort:");
//Arrays.sort(k3);
for (int i = 0; i < k3.length; i++) {//升序输出以field为关键字的toSort排序,所以下面就是寻找k3[i]相等的关键字所在的字符串位置
for (int j = 0; j < toSort.length; j++){
if (k3[i] ==Integer.parseInt((toSort[j].split(":"))[field])) {//当k3[i]等于temp[field]里面的数值时,输出,
// 但是由于temp是一个一直变化的,所以只能重新进行temp数组的生成过程
System.out.println(toSort[j]);
}
}
}
}
}
测试代码:我是直接将主类改成单元,然后调用该单元对其进行测试
public class testMysort {
public static void main(String[] args) {
mysort3 sort1 = new mysort3();
String[] toSort = {"aaa:10:1:1",
"ccc:30:3:4",
"bbb:50:4:5",
"ddd:20:5:3",
"eee:40:2:20"};
sort1.mySort(toSort,1);
System.out.println();
sort1.mySort(toSort,3);
System.out.println();
}
}
五、代码链接
六、运行结果截图
七、参考资料
- 《Java2实用教程(第五版)》
- JDKTM 6 Documentation
学号20175313 《实现Linux下Sort -t : -k 2功能》第十二周的更多相关文章
- 学号20175313 《实现Linux下cp XXX1 XXX2的功能(一)》第九周
目录 MyCP 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.伪代码分析 六.代码链接 七.代码实现过程中遇到的问题 八.运行结果截图 九.参考资料 MyCP 一.题目要求 编写MyCP ...
- 学号20175313 《实现Linux下cp XXX1 XXX2的功能(二)》第九周
目录 MyCP2 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.伪代码分析 六.代码链接 七.代码实现过程中遇到的问题 八.运行结果截图 九.心得体会 十.参考资料 MyCP2 一.题目 ...
- linux下sort命令使用详解---linux将文本文件内容加以排序命令
转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...
- 补交 20155202 蓝墨云班课 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能
蓝墨云班课 编写MyCP.java 要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX ...
- 《Linux下cp XXX1 XXX2的功能》的实现
<Linux下cp XXX1 XXX2的功能>的实现 一.题目要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyC ...
- 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能
题目:编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能 要求:MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十 ...
- 20175303 Mycp实现Linux下cp xxx1 xxx2的功能
20175303 Mycp实现Linux下cp xxx1 xxx2的功能 一.题目要求 编写MyCP2.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP2支持两个参数: ja ...
- 2017-2018-1 《Linux内核原理与设计》第十二周作业
<linux内核原理与设计>第十二周作业 Sql注入基础原理介绍 分组: 和20179215袁琳完成实验 一.实验说明 SQL注入攻击通过构建特殊的输入作为参数传入Web应用程序,而这 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十二周作业
<Linux内核原理与分析>第十二周作业 一.本周内容概述: 通过编程理解 Set-UID 的运行机制与安全问题 完成实验楼上的<SET-UID程序漏洞实验> 二.本周学习内容 ...
随机推荐
- vue html属性绑定
业务场景: element ui里面select的组件,通过勾选是否启动搜索功能 解决: 在select组件上绑定一个 :filterable,值就是是否可搜索的checkbox的值 true和fa ...
- SMTP命令
SMTP(Simple Mail Transfer Protocol)简单邮件传输协议 Basic Commands: HELO(Hello):标识用户身份 MAIL FROM:发件人地址 RCPT ...
- kafka连接storm问题
遇到缺少jar包的报错,参考https://www.jianshu.com/p/70c3a7f56386 参考上面的链接把jar包都放到storm/lib目录下后,使用localCluster的方法提 ...
- JavaScript基础概念与语法
学习了一些最基础的JavaScript语法: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- navicat for oracle 导入xlsx文件提示无法打开xlsx文件
navicat for oracle 导入xlsx文件提示:无法打开xlsx文件 导入环境: navicat for oracle wps状态的xlsx文件 处理: 将wps状态的xlsx文件,打开方 ...
- 【Day4】4.Request对象之Get请求与URL编码
import urllib.parse as up import urllib.request as ur kw = '动漫' data ={ 'kw':kw, 'ie':'utf-8', 'pn': ...
- <转载>c++中new一个二维数组
原文连接 在c++中定义一个二维数组时有多种方式,下面是几种定义方式的说明:其中dataType 表示数据类型,如int byte long... 1.dataType (*num)[n] = n ...
- RT-Thread--内核基础
内核介绍 内核处于硬件层之上,内核部分包括内核库.实时内核实现. 实时内核的实现包括:对象管理.线程管理及调度器.线程间通信管理.时钟管理及内存管理等等,内核最小的资源占用情况是 3KB ROM,1. ...
- 用js刷剑指offer(替换空格)
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 牛客网链接 js代码 func ...
- .npmrc 实用小技巧
小技巧 因为每次执行 npm adduser 的时候都需要输入用户名.密码和email 很麻烦,我们都可以配置在.npmrc 文件中,在命令行中执行如下脚本 echo -n 'myuser:mypas ...
