public static void main(String[]args) throws java.io.IOException {
BufferedReader br=new BufferedReader(new FileReader("C:\\Users\\MeLT\\Desktop\\JAVA-START\\src\\second\\Poem.txt"));
BufferedWriter bw=new BufferedWriter(new FileWriter("C:\\Users\\MeLT\\Desktop\\JAVA-START\\src\\second\\Fix.txt"));
String line;
HashMap<String,String> hm=new HashMap<>();
while((line=br.readLine())!=null){
String[] part = line.split("\\.");
hm.put(part[0],part[1]);
}
for(String key:hm.keySet()){
String value=hm.get(key);
line=key+"."+value;
bw.write(line);
bw.newLine();
}
br.close();
bw.close();
}
我先把春江花月夜顺序打乱进行排序,结果排序后1-10部分和11-18脱节了...求大佬解惑
你这样的比较是字符串的比较,并不是表面上单纯的"11"<"12",而是转换为了ascII码,前面的“1”对比相同,第二个字符对比,“1”<"2",后面的是因为“.”>“1”~“9”的,所以才会这样。
如果你想要排序的话,可以用MAP<K,V>,K存储序号,V存储后面的语言,之后将所有的K存储在List,然后排序。在之后按照顺序去Map中将他们的诗词拿出来;
这就要讲到hashmap的底层原理了
你的意思是存到Map集合中然后打印乱了吗?
如果是这样的,Map由于Key是使用Hash计算得到的地址,不能保证有序哦。
可参考:https://blog.csdn.net/weixin_55086330/article/details/113873839
因为hashMap存储key时是无序的,如果你想要有序,用treeMap,实现Comparable
接口就行了,希望你看懂了能采纳嘻嘻