黑马程序员技术交流社区
标题:
一个应该跟JDK版本有关的问题。
[打印本页]
作者:
张扬123
时间:
2012-8-11 02:19
标题:
一个应该跟JDK版本有关的问题。
今天和杨兄讨论问题,发现一个事情。先发代码。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class Test4
{
public static void main(String[] args)
{
String str = "abadcdffbaeba";
Map<String,Long> result = new HashMap<String,Long>();
String[] s = str.split("");
for(String c : s) {
if("".equals(c)) continue;
if(result.get(c) != null) {
result.put(c, result.get(c)+1);
} else {
result.put(c,1L);
}
}
List<Map.Entry<String, Long>> list = new ArrayList<Map.Entry<String, Long>>(result.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Long>>() {
@Override
public int compare(Entry<String, Long> o1, Entry<String, Long> o2) {
long i = o1.getValue() - o2.getValue();
if(i==0l) {
return o2.getValue().compareTo(o1.getValue())==0 ? 1 :0;
}
return i > 0l ? 1 : 0;
}
});
for(Map.Entry<String, Long> me : list) {
System.out.println(me.getKey() + ":" +me.getValue());
}
}
}
复制代码
这个代码,在我的MyEclipse上跑出来的结果是正确的。
c:1
e:1
d:2
f:2
b:3
a:4
可是在杨兄的电脑上跑出来是:
f:2
d:2
e:1
b:3
c:1
a:4
我们俩一阵分析,最终发现跟jdk版本有关。因为他用的1.7的,我用的MyEclipse自带的1.6的。后来发现,我自己电脑上安装的是1.7的JDK,命令符打出来的结果跟他的一样。这一现象更加说明了此问题跟版本有关吧?按理说升级后,1.6能跑对的问题1.7不应该有不一致的啊。有没有大神解释一下这个问题?难道这是传说中的BUG么。。。还有,MyEclipse8.5的为什么不能配置JDK1.7呢?你们的有这个问题么。不妨试一下。
file:///D:\360data\重要数据\我的文档\Tencent Files\1768729394\Image\H78]4OG]7WCO]3N$68{W%FE.jpg
file:///D:\360data\重要数据\我的文档\Tencent Files\1768729394\Image\H78]4OG]7WCO]3N$68{W%FE.jpg
作者:
魏-玉-彪
时间:
2012-8-11 18:44
居然有这等事?
作者:
张扬123
时间:
2012-8-12 16:37
魏-玉-彪 发表于 2012-8-11 18:44
居然有这等事?
嗯哪。你试试。
作者:
黄树人
时间:
2012-8-12 17:07
额,有这事,不科学啊{:soso_e103:}
作者:
张扬123
时间:
2012-8-12 17:19
黄树人 发表于 2012-8-12 17:07
额,有这事,不科学啊
难道就没人能回答我这个问题么?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2