在练习java文本排序的示教代码时,同样的代码,老师运行时正常,我在自己的电脑上则出现序号排序异常,应该为1、2、3、4、5、6、7、8、9的顺序,变成了2、3、4、5、6、7、8、9、-1,文本文档显示正常。修改编码方式后数字的顺序变正常了(1、2、3、4、5、6、7、8、9),但文本文档变成乱码,请问应该怎样解决?
public class DemoBufferedTextSort {
public static void main(String[] args) throws IOException {
Map<String, String> hashMap = new HashMap<>();
BufferedReader br = new BufferedReader(new FileReader("d:\\IdeaProjects\\i.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\IdeaProjects\\h.txt"));
String line;
while ((line=br.readLine())!=null){
String[] arr = line.split("\\.");
hashMap.put(arr[0],arr[1]);
}
Set<String> set = hashMap.keySet();
for(Object key:set){
System.out.print(key); //i.txt使用utf-8编码方式时排序为234567891
//i.txt使用ANSI编码方式时排序为正常的123456789,但写入的文本为乱码
}
for (String key : set) {
String value = hashMap.get(key);
line=key+"."+value;
bw.write(line);
bw.newLine();
}
bw.close();
br.close();
}
}
经过仔细分析,对照网上的一些文档,找到是由于zwnbsp编码造成的,在utf-8编码时在数字1的前面加入了空白符,Hashmap在get(key)时,将空白符和数字1一起认作key了,所以在自动排序时不能和其它数字正常比较而放在了最后。但不知道要怎么解决,请高手指点!
https://blog.csdn.net/chouqiu8451/article/details/100746723
我也遇到了这个问题 我把文本编码调了 但是 排序又不对了 请问怎么解决呢