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的用法和区别,我找到了学姐的一篇博客

2017-2018-2 20165312 课下选做 MySort的更多相关文章

  1. 20175312 2018-2019-2 《Java程序设计》第6周课下选做——类定义

    20175312 2018-2019-2 <Java程序设计>第6周课下选做--类定义 设计思路 1.我觉得Book其实就是一个中转的作用,由测试类Bookself通过Book输入数据,然 ...

  2. 课下选做作业实现mypwd

    2019-2020-1 20175227 <信息安全系统设计基础> 课下选做作业实现mypwd 要求 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 ...

  3. 课下选做作业MyOD

    2019-2020-1 20175227 <信息安全系统设计基础> 课下选做作业MyOD 要求 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc ...

  4. 课下选做作业MySort

    20175227张雪莹 2018-2019-2 <Java程序设计> 课下选做作业MySort 要求 注意:研究sort的其他功能,要能改的动代码,需要答辩 模拟实现Linux下Sort ...

  5. 20165202 week4课下补做

    1.相关知识点的总结 编程实现1!+2!+3!+... + N!的功能,N由命令行传入,比如类名为SumofRecur, java SumofRecur 8 给出1!+2!+3!+... + 8!的值 ...

  6. 20165202 week10课下补做

    相关知识点总结 在数据结构和算法中,排序是很重要的操作,要让一个类可以进行排序,有两种方法: 有类的源代码,针对某一成员变量排序,让类实现Comparable接口,调用Collection.sort( ...

  7. 课下必做MyCP

    一.Linux的CP命令 Linux 的cp命令 功能: 复制文件或目录 说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有 ...

  8. 课下选作Main dc

    一.中后缀定义: 中缀表达式:我们平时写的数学表达式一般为中缀表达式,如"5+2(3(3-12+1))",直接拿中缀表达式直接让计算机计算表达式的结果并不能做到. 后缀表达式:把中 ...

  9. MySort(选做)

    一.题目要求 注意:研究sort的其他功能,要能改的动代码,需要答辩 模拟实现Linux下Sort -t : -k 2的功能. 要有伪代码,产品代码,测试代码(注意测试用例的设计) 参考 Sort的实 ...

随机推荐

  1. 977. Squares of a Sorted Array有序数组的平方

    网址:https://leetcode.com/problems/squares-of-a-sorted-array/ 双指针法 把左端的元素和右端的元素比较后挑出绝对值大的,将其平方放入ans中,并 ...

  2. 选择器:first-child与:last-child失效的解决方法

    作为还在努力练习的代码小白来说,有时类名或者ID名太多很容易就会搞混,为此,在练习中会想着借用多样的选择器来设置而不是每一个标签都设一个类名(Id名),在此次练习中使用选择器:first-child与 ...

  3. CentOS 6快捷安装RabbitMQ教程

    1.安装Erlang yum install erlang 2.安装RabbitMQ yum install rabbitmq-server 3.配置开机自启动 chkconfig rabbitmq- ...

  4. Ansible 小手册系列 十四(条件判断和循环)

    条件判断 When 语句 在when 后面使用Jinja2 表达式,结果为True则执行任务. tasks: - name: "shut down Debian flavored syste ...

  5. 码云git使用五(创建远程分支和更新远程分支)

    1.创建一个与远程分支没有关联的本地分支 2.从远程拉取到本地分支 3.创建远程分支() 4.搞定了.

  6. Java SubString截取字符串

    在String中有两个substring()函数,如下: 一:String.substring(int start) 参数: start:要截取位置的索引 返回: 从start开始到结束的字符串 例如 ...

  7. 关于 java 里面的路径

    getClass().getResource("/").getPath()   获取当前类编译的文件的 目录  如果该文件已经是jar包中的文件 只能读取到该jar 包的 路径 g ...

  8. Linux c 从文件当中读取任意一行的数据

    代码如下 #include <stdio.h>#include <stdlib.h>#include <sys/stat.h>#include <sys/ty ...

  9. navicat连接Oracle数据库

    记录一下navicat连接Oracle数据库过程: 一.根据自己版本去Oracle官网下载instantclient 地址:https://www.oracle.com/technetwork/top ...

  10. Unity中UGUI鼠标穿透UI问题的解决方法

    不过在使用时需要先获取两个红色显示的变量,graphicRaycaster和eventSystem. 这两个变量分别对应的是Canvas中的GraphicRaycaster组件和创建UI时自动生成的“ ...