今天和杨兄讨论问题,发现一个事情。先发代码。- 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
|
|