课下选做作业MySort
20175227张雪莹 2018-2019-2 《Java程序设计》
课下选做作业MySort
要求
- 注意:研究sort的其他功能,要能改的动代码,需要答辩
- 模拟实现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);
}
}
相关知识
- Linux系统下的Sort功能
- 功能: 将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序。
- 参数:
| 参数 | 功能说明 |
|---|---|
| -b | 忽略每行前面开始出的空格字符。 |
| -c | 检查文件是否已经按照顺序排序。 |
| -d | 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。 |
| -f | 排序时,将小写字母视为大写字母。 |
| -i | 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。 |
| -m | 将几个排序好的文件进行合并。 |
| -M | 将前面3个字母依照月份的缩写进行排序。 |
| -n | 依照数值的大小排序。 |
| -o<输出文件> | 将排序后的结果存入指定的文件。 |
| -r | 以相反的顺序来排序。 |
| -t<分隔字符> | 指定排序时所用的栏位分隔字符。 |
sort -n -k 2 -t'-' date // -t<分隔字符> 指定排序时所用的栏位分隔字符。 -k 选择以哪个区间进行排序
- split方法:一个String类的数组以regex传入的分隔符为标准,对字符串进行分隔,使用时分隔符要放在双括号中。

代码实现
- 伪代码
将字符串数组tosort用“:”分隔,以第二列数值大小为标准从小到大排列:
创建整型数组a,长度与tosort长度相同
调用split函数将tosort数组以:(冒号)为分隔符分成小字符串
将每一个tosort元素的第二例列数值存入数组a中
调用Arrays类的sort函数对a进行排序
输出排序后的结果
- 产品代码
/**
* @author 20175227 Xueying Zhang
* @date 2019/5/19 11:44.
*/
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);
int [] a=new int[toSort.length];
for(int i=0;i<toSort.length;i++){//对toSort每一个元素用split进行划分,并储存进字符串数组list中
String [] list=toSort[i].split(":");
a[i]=Integer.parseInt(list[1]);//将list中第二个元素,即toSort中第二列元素存进a中
}
Arrays.sort(a);
System.out.println("After sort:");
for (int i = 0; i < a.length; i++)//对a中每个元素
for (int j = 0; j < toSort.length; j++)//在toSort中每一个元素的第二列中比较
if (a[i] == Integer.parseInt((toSort[j].split(":"))[1]))//如果二者相等
System.out.println(toSort[j]);//就输出该项元素
}
public static int StringTest1(String str){
int a;
String [] list=str.split(":");
a=Integer.parseInt(list[1]);//将list中第二个元素,即toSort中第二列元素存进a中
return a;
}
public static int[] StringTest2(String[] toSort){
int [] a=new int[toSort.length];
for(int i=0;i<toSort.length;i++){//对toSort每一个元素用split进行划分,并储存进字符串数组list中
String [] list=toSort[i].split(":");
a[i]=Integer.parseInt(list[1]);//将list中第二个元素,即toSort中第二列元素存进a中
}
Arrays.sort(a);
return a;
}
}
- 测试代码
import junit.framework.TestCase;
import org.junit.Test;
public class MySortTest extends TestCase {
String [] toSort = {
"aaa:10:1:1",
"ccc:30:3:4",
"bbb:50:4:5",
"ddd:20:5:3",
"eee:40:2:20"};
@Test
public void testl() {
assertEquals(10,MySort.StringTest1("aaa:10:1:1"));
}
public void test2() {
assertEquals(20,MySort.StringTest2(toSort)[1]);
}
}
运行示例
- 产品代码运行结果

- 测试结果

代码托管
参考资料
课下选做作业MySort的更多相关文章
- 课下选做作业实现mypwd
2019-2020-1 20175227 <信息安全系统设计基础> 课下选做作业实现mypwd 要求 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 ...
- 课下选做作业MyOD
2019-2020-1 20175227 <信息安全系统设计基础> 课下选做作业MyOD 要求 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc ...
- 2017-2018-2 20165312 课下选做 MySort
2017-2018-2 20165312 课下选做 MySort 题目描述 模拟实现Linux下Sort -t : -k 2的功能,参考 Sort的实现. import java.util.*; pu ...
- 20175312 2018-2019-2 《Java程序设计》第6周课下选做——类定义
20175312 2018-2019-2 <Java程序设计>第6周课下选做--类定义 设计思路 1.我觉得Book其实就是一个中转的作用,由测试类Bookself通过Book输入数据,然 ...
- 20165202 week4课下补做
1.相关知识点的总结 编程实现1!+2!+3!+... + N!的功能,N由命令行传入,比如类名为SumofRecur, java SumofRecur 8 给出1!+2!+3!+... + 8!的值 ...
- 20165202 week10课下补做
相关知识点总结 在数据结构和算法中,排序是很重要的操作,要让一个类可以进行排序,有两种方法: 有类的源代码,针对某一成员变量排序,让类实现Comparable接口,调用Collection.sort( ...
- 课下必做MyCP
一.Linux的CP命令 Linux 的cp命令 功能: 复制文件或目录 说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有 ...
- 课下选作Main dc
一.中后缀定义: 中缀表达式:我们平时写的数学表达式一般为中缀表达式,如"5+2(3(3-12+1))",直接拿中缀表达式直接让计算机计算表达式的结果并不能做到. 后缀表达式:把中 ...
- MySort(选做)
一.题目要求 注意:研究sort的其他功能,要能改的动代码,需要答辩 模拟实现Linux下Sort -t : -k 2的功能. 要有伪代码,产品代码,测试代码(注意测试用例的设计) 参考 Sort的实 ...
随机推荐
- python滴啊用caffe时的小坑
在使用caffe的python接口时, 如下,如果标黄的部分不加上的话,两次调用该函数,后面的会将前面的返回值覆盖掉,也就是fea1与fea2相等,但是fea1_ori会保留原来的fea1 解决方法为 ...
- vue项目在IE浏览器和360兼容模式下页面不显示问题,亲测有效
解决方法:安装 "babel-polyfill" 1.命令:cnpm install --save-dev babel-polyfill 2.在入口main.js文件引入:impo ...
- Java优化高性能高并发+高并发程序设计视频教程
转自:https://www.cnblogs.com/ajianku/p/10236573.html 第1章 课程介绍及项目框架搭建1-1 Java高并发商城秒杀优化导学1-2 项目环境搭建(Ecli ...
- QTP10破解步骤(亲试有效)
QTP10破解步骤: 1.安装qtp,一路默认下来(一定要默认安装目录),一直到要求输入License的界面 2.拷贝mgn-mqt82.exe到C:\Program Files\Mercury In ...
- 【异常】‘for’ loop initial declarations are only allowed in C99 mode
1 Python版本导致的异常 /root/Python-3.5.7/Modules/_pickle.c: In function ‘PyMemoTable_Copy’: /root/Python-3 ...
- Java中的集合(上):概述、Collection集合、List集合及其子类
一.集合的体系结构 二.Collection集合 1.基本使用 如下代码 import java.util.ArrayList; import java.util.Collection; public ...
- Ubuntu系统---以virtualenv方式安装Tensorflow-CPU
Ubuntu系统---以virtualenv方式安装Tensorflow-CPU 一.安装环境 环境:Ubuntu18.04+CPU+python2.7 本文介绍:如何在ubuntu上以virtual ...
- eclipse设置打开java文件目录
1. 第一步: 2. 第二步: 3. 第三步: Location:C:/WINDOWS/explorer.exe Arguments:${container_loc}
- JavaScript教程——函数(arguments 对象)
arguments 对象 定义 由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数.这就是arguments对象的由来. arguments对象包含了 ...
- [HBase]region compaction流程