六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 33|回复: 0

对字符串中字符出现的次数进行排序

[复制链接]

升级  0.4%

326

主题

326

主题

326

主题

探花

Rank: 6Rank: 6

积分
1008
 楼主| 发表于 2013-1-27 05:00:04 | 显示全部楼层 |阅读模式
import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;/** *  对字符串中字符出现的次数进行排序。 *  * @author 赵学庆 www.java2000.net */public class T {  public static void main(String args[]) {    String str = "12345678hfdjkslahfkj932189oiefsjkar94werfdsf";    Map<Character, KeyValue> map = new HashMap<Character, KeyValue>();    char c;    KeyValue kv = null;    for (int i = 0; i < str.length(); i++) {      c = str.charAt(i);      kv = map.get(c);      if (kv == null) {        kv = new KeyValue();        kv.ch = c;        kv.count = 1;        map.put(c, kv);      } else {        kv.count++;      }    }    List<KeyValue> list = new ArrayList<KeyValue>(map.values());    Collections.sort(list);    for (KeyValue o : list) {      System.out.println(o.ch + "=" + o.count);    }  }}class KeyValue implements Comparable {  public int compareTo(Object obj) {    if (obj instanceof KeyValue) {      KeyValue kv = (KeyValue) obj;      return kv.count - this.count;    }    return -1;  }  char ch;  int count;} 运行结果
f=5
j=3
k=3
s=3
9=3
d=2
e=2
a=2
h=2
3=2
2=2
1=2
r=2
4=2
8=2
o=1
l=1
i=1
w=1
7=1
6=1
5=1
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表