java 中 遍历 hashmap的问题

输入bfc,现在输出的结果是f:1|b:1|c:1|。希望能够按照输入的顺序输出变成b:1|f:1|c:1importjava.util.*;publicclassTes... 输入bfc,现在输出的结果是f:1|b:1|c:1|。希望能够按照输入的顺序输出变成b:1|f:1|c:1

import java.util.*;

public class Test1 {
public static void main(String[] args){
String str="bfc";
System.out.println(new Test1().getCharNum(str));
}

public String getCharNum(String str){
char t1;
Integer in;
Map<Character,Integer> map=new HashMap<Character, Integer>();
for(int i=0;i<str.length();i++){
t1=str.charAt(i);
//System.out.print(t1);
in=map.get(t1);
if(in==null){
map.put(t1, 1);
}else{
map.put(t1, in+=1);
}
}
Set<Character> set=map.keySet();
StringBuilder sbr=new StringBuilder();
for(Character act:set){
in=map.get(act);
sbr.append(""+act+":"+in+"|");
}
return sbr.toString();
}
}
展开
 我来答
开阳曦39
2014-09-15 · TA获得超过180个赞
知道答主
回答量:44
采纳率:0%
帮助的人:63.2万
展开全部
可以使用LinkedHashMap来解决迭代顺序与插入顺序一致的问题。
在你的代码中,用LinkedHashMap替换HashMap即可。

参看:

LinkedHashMap和HashMap的比较使用

http://www.cnblogs.com/hubingxu/archive/2012/02/21/2361281.html.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冷叶忆雪
2014-09-15 · TA获得超过1018个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:166万
展开全部
Map在put的时候,它的键值是一个Set——这意味着它是不重复而且乱序的,所以你不能通过获得Map的keySet然后得到原来put元素时的顺序。如果你想要的得到put的顺序,第一建议是使用其他集合,比如List;第二就是使用LinkedHashMap,它可以保存记录的插入顺序,遍历时先得到的记录是先插入的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
罊刚
2014-09-15 · 超过64用户采纳过TA的回答
知道答主
回答量:123
采纳率:100%
帮助的人:118万
展开全部
n.setTau(tau);
你set 0.8一次再get 就是0.8
tau = tau*0.8;为0.64
再set一次再get就是 0.64
估计你的节点是同一个。。。
希望对你能有所帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heptnaol
2014-09-15 · TA获得超过7263个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1842万
展开全部
使用TreeMap,即可保证顺序,不过如果key值是自定义类型,需要实现Comparable接口
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式