一、题目要求

实现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();
}
}

五、代码链接

六、运行结果截图

七、参考资料

学号20175313 《实现Linux下Sort -t : -k 2功能》第十二周的更多相关文章

  1. 学号20175313 《实现Linux下cp XXX1 XXX2的功能(一)》第九周

    目录 MyCP 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.伪代码分析 六.代码链接 七.代码实现过程中遇到的问题 八.运行结果截图 九.参考资料 MyCP 一.题目要求 编写MyCP ...

  2. 学号20175313 《实现Linux下cp XXX1 XXX2的功能(二)》第九周

    目录 MyCP2 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.伪代码分析 六.代码链接 七.代码实现过程中遇到的问题 八.运行结果截图 九.心得体会 十.参考资料 MyCP2 一.题目 ...

  3. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  4. 补交 20155202 蓝墨云班课 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能

    蓝墨云班课 编写MyCP.java 要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX ...

  5. 《Linux下cp XXX1 XXX2的功能》的实现

    <Linux下cp XXX1 XXX2的功能>的实现 一.题目要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyC ...

  6. 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能

    题目:编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能 要求:MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十 ...

  7. 20175303 Mycp实现Linux下cp xxx1 xxx2的功能

    20175303 Mycp实现Linux下cp xxx1 xxx2的功能 一.题目要求 编写MyCP2.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP2支持两个参数: ja ...

  8. 2017-2018-1 《Linux内核原理与设计》第十二周作业

    <linux内核原理与设计>第十二周作业 Sql注入基础原理介绍 分组: 和20179215袁琳完成实验 一.实验说明   SQL注入攻击通过构建特殊的输入作为参数传入Web应用程序,而这 ...

  9. 2019-2020-1 20199329《Linux内核原理与分析》第十二周作业

    <Linux内核原理与分析>第十二周作业 一.本周内容概述: 通过编程理解 Set-UID 的运行机制与安全问题 完成实验楼上的<SET-UID程序漏洞实验> 二.本周学习内容 ...

随机推荐

  1. controller 层 date 类型的参数,SpringBoot自动转换 dateformat

    这样客户端提交的String 就可以自动转换为Date了!!!

  2. 关于一个mvc架构的cms的后台getshell

    都知道,mvc的话 除了根目录还有public目录可以访问,其他的访问都是不行的,因为会默认都是会解析url 然后我们来看今天的猪脚 大概的图片上传还有远程文件加载我黑盒测过了  就是想捞一个快一点的 ...

  3. iOS热更新实现方式

    heart.jpg 苹果静止热更新,可惜我的是企业app,没有这些约束了,随便用.(当然有些热更新已经可以通过苹果审核了,比如JSPatch)官网说的: JSPatch 平台 SDK 1.7.2 以上 ...

  4. flask的多个url对应同一个视图函数

    # -*- coding: utf-8 -*- from flask import Flask app = Flask(__name__) @app.route('/') def index(): r ...

  5. 开发六年mybatisplus使用小结

    最近在项目里用到了一个第三方库,叫mybatisplus,是一个mybatis的增强库,简单来说就是增强了mybatis的功能,让mybatis更好用,mybatisplus给的官方定义是Mybati ...

  6. TSN(Temporal Segment Networks)

    一.算法详解 二.代码解析(pytorch版) 训练代码:https://blog.csdn.net/u014380165/article/details/79058147 测试代码:https:// ...

  7. Linux shell批量执行scp脚本工具

    转载: linux shell + expect:批量scp脚本工具             2011-09-13 15:51:06 分类: Python/Ruby 最近在准备一个部署的任务,其中有一 ...

  8. 传说中Python最难理解的点,看这完篇就够了

    本文转载自简书,作者为菜鸟,感谢作者的辛苦付出. 这不是我第一次学Python入门课,去年.前年我都学过Python入门.所以文章的标题一点都没有标题党的意思.但是整个入门篇还有一个最难的东西没有讲, ...

  9. 分享一波目前写的最强的autohotkey 插件

    支持各种软件快速切换,补全括号,代码等!!!!!!!! ;这种全局定义要写在所有代码的前面才能让所有代码起作用. SetCapsLockState , AlwaysOff SetNumlockStat ...

  10. c语言1博客作业09

    一.本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/10033 ...