关于解决MySort
- 那天老师教给我们关于sort的用法以及String类中的split方法。在一定程度上告诉我们sort用法的原理和一些特别的用法后,老师叫我们用JAVA尝试去设计一个"MySort"来实现sort的方法。
- 据我的个人情况我对split的用法了解不够深,在帮助文档中发现其解释我能了解的也是十分有限
如:regex是什么,而又应该填什么;使用split方法时又应该用什么样的格式来使用这一方法……
带着这些疑问,我上到网上去查相关资料,发现split的用法是建立在一个String类的数组中其中的regex意思是以什么分隔符为标准,并对字符串进行分隔,用的时候分隔符要放在双括号中如:
若以"aa:10:1:1"中的":"为分隔符
"aa:10:1:1"--->"aa" "10" "1" "1"
这样一来就知道split的方法之一了,还有一个在regex参数后添加一个整形数。为探求其功能,我直接在我原来学习split的代码上试验
public class aboutsplit {
public static void main(String[] args){
String [] toSort = {"aaa:10:1:1"}
String[] div = toSort[0].split(":",2);
for(int d=0; d<div.length;d++){
System.out.println(div[d]);
}
}
}
因此可以得到这种用法可以使第n个分支开始停止断开。
- 解决了split的知识点后,仍然有新的麻烦——字符串是属于分开的状态,怎样才可以将怎段完整的字符串进行排序?
在经过一段时间的思考和纸上的运算后,可以利用老师给的模板用两个循环来实现这个想法。
- 首先创建一个新的字符串数组来存放新排列的字符串。
- 创建两个互相镶嵌的循环来实现字符串的新排列
- 第一个循环来将新排列的字符串放进新数组中
- 第二个循环用来匹配,是否满足我要求的列排序
完成后代码如下:
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 [] k2 = new int[toSort.length];
for(int i =0;i<toSort.length;i++){
String[] div = toSort[i].split(":");
k2[i]=Integer.parseInt(div[1]);
}
Arrays.sort(k2);
String[] save = new String[k2.length];
for(int i=0;i<toSort.length;i++)
for (int k = 0; k < k2.length; k++) {
if (toSort[i].substring(4,6).equals(String.valueOf(k2[k]))) {
save[k]=toSort[i];
}
}
System.out.println();
System.out.println("After sort:");
for(int i =0;i<save.length;i++){
System.out.println(save[i]);
}
}
}
运行结果:
- 感悟与反思
自己写代码的效率还是不够高,实践的次数和深度还是不够。今后会自己动手多写新代码,从而发现更多的问题,从而能够让自己进步。