课下选做作业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的实 ...
随机推荐
- vue统一注册组件
文件夹下面组件数量较多,如果每一个组件先import然后在 components,虽然灭有问题,但是会导致代码量大,而且不直观 解决办法: 将图元组件进行统一注册 新建一个pixels文件,文件里面的 ...
- 红外 NEC编码
它是一种电磁波,可以实现数据的无线传输 它的波长范围为760nm ~ 1mm,不为人眼所见 紫外光波长为10-400nm 红外与蓝牙 红外:对准.直接.0-10米,单对单 蓝牙:10米左右,加强信号后 ...
- 2.1 使用JAXP 对 xml文档进行DOM解析
//使用 jaxp 对xml文档进行dom解析 public class Demo2 { //必要步骤 @Test public void test() throws Exception { //1. ...
- scp上传文件到远程服务器
scp -P 22 E:/download/2028792_www.yeves.cn_nginx/cloud.pem root@ip:/usr/local/src
- java 使用POI导出百万级数据
先看结果吧,这只是测试其中有很多因数影响了性能. 表总数为:7千多万,测试导出100万 表字段有17个字段 最终excel大小有60多兆 总耗时:126165毫秒 差不多2分多钟 其核心简单来说就是分 ...
- 去掉行尾的^M
1. 处理掉行尾的^M 在windos下进行linux内核驱动编写,调试成功后需要集成到内核代码中去,所以会通过虚拟机共享文件夹拷贝到内核对应目录,这时候看源码文件还是没有异常的. 当对该文件进行回车 ...
- asp.net 设计音乐网站
第一步 收集资料 http://www.logoko.com.cn/ --设计logo网站 设计音乐文档 https://wenku.baidu.com/view/3d957617f18583 ...
- [SDOI2008]山贼集团
题目描述 某山贼集团在绿荫村拥有强大的势力,整个绿荫村由\(N\)个连通的小村落组成,并且保证对于每两个小村落有且仅有一条简单路径相连. 小村落用阿拉伯数字编号为\(1,2,3,4, \dots ,n ...
- Spring源码解读(一)
前期准备 首先搭建一个简单的Spring Demo工程 项目目录结构如下图所示: applicationContect.xml (可以取其他文件名,只要在加载配置文件时指定文件路径) <?xml ...
- AI行业精选日报_人工智能(12·23)
日本探索用人工智能指挥交通 据日本共同社报道,日本一家机构正在研究开发一套新的交通系统,将应用人工智能技术分析数据来缓解城市交通拥堵.报道称,在日本新能源和产业技术综合开发机构研发的这套系统中,人工智 ...