java集合面试题

1、输入任意一个字符串,统计该字符串各个字符出现的次数,并按出现次数的小到大排序?

public static void main(String[] args) {

String str = "erfdgfdgreerfewgdrgfcvvbgfhgfhgfngfngh";
char[] charStrs = str.toCharArray();
HashMap<String, Integer> mHashMap = new HashMap<String, Integer>();
for (int i = 0; i < charStrs.length; i++) {
char mChar = charStrs[i];
if (mHashMap.containsKey(mChar + "")) {
int val = mHashMap.get(mChar + "") + 1;
mHashMap.put(mChar + "", val);
} else {
mHashMap.put(mChar + "", 1);
}
}
// 对map排序
mHashMap = sort(mHashMap);
System.out.println(sort(mHashMap));
}
private static HashMap<String, Integer> sort(HashMap<String, Integer> map) {

Set<Entry<String, Integer>> sets = map.entrySet();

List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(
sets);
Collections.sort(list, new Comparator<Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1,
Entry<String, Integer> o2) {
return o1.getValue() - o2.getValue();
}
});
LinkedHashMap<String, Integer> linkMap = new LinkedHashMap<String, Integer>();
for (Entry<String, Integer> entry : list) {
linkMap.put(entry.getKey(), entry.getValue());
}
return linkMap;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值