黑马程序员技术交流社区

标题: 大神们看看是什么问题? [打印本页]

作者: 邹学良    时间: 2013-3-13 13:09
标题: 大神们看看是什么问题?
本帖最后由 邹学良 于 2013-3-14 14:02 编辑
  1. ArrayList<Map.Entry<String, Long>> inf =
  2. new ArrayList<Map.Entry<String, Long>>(mp.entrySet());
  3. Collections.sort(inf, new Comparator<Map.Entry<String, Long>>() {
  4. public int compare(Map.Entry<String, Long> o1,
  5. Map.Entry<String, Long> o2) {
  6. return (int) ((o2.getValue())-(o1.getValue()));
  7. }
  8. });

  9. FileWriter fw=new FileWriter("f:\\s.txt");

  10. for (int x = 0; x < inf.size(); x++) {
  11. fw.write(inf.get(x).getKey().toString()+"\r\n");//这个位置写入怎么有问题?
  12. fw.flush();
  13. System.out.println(inf.get(x).toString());
  14. }
复制代码
本来是想要按顺序录入的
但程序就是不能按遍历写入?

找到问题所在了
原来是MAP中的Value值都存入了同一个数

作者: 谢洋    时间: 2013-3-14 00:19
代码这么少,没法看
作者: 张雪萍    时间: 2013-3-14 00:24
我勒个去。怎么看,太那啥了,发帖的时候上边的工具里不是有专门贴代码的嘛,符号为<>,这样代码会比较清晰。
作者: 李辉    时间: 2013-3-14 04:01
整了一个快半个小时终于破解! 不是流的问题。
第13行的 fw.write(inf.get(x).getKey().toString()+"\r\n"); 这句是没有问题的。
问题在于你的匿名类,匿名类不能在参数里定义。我一开始注意到你这种不寻常的用法了,以为是自己孤陋寡闻没见过而已,而且我把你的代码补全之后,编译也没问题,就以为这样写也可以,别的地方找来找去也找不出毛病,最后把匿名类拿出去就好了。
你这也算找到一个编译器的漏洞啊,功劳不小啊!
作者: 李辉    时间: 2013-3-14 04:25
奇怪了,我把代码又还原成你写的,重新测试好几遍,乱序的问题竟然再没重现!求真相!
作者: fighting    时间: 2013-3-14 07:22
没有什么问题啊,不知道楼主说的是什么问题
作者: 猫腻    时间: 2013-3-14 09:29
楼主:如果有其他问题请继续追问,如果没有问题,请结贴,把“未解决”改“已解决”
作者: yhnan    时间: 2013-3-14 13:27
我去~   我都看晕了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2