java2000.net 发表于 2013-1-27 04:59:31

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

<div class="highlighter">
[*]import java.util.ArrayList;
[*]<span />import java.util.Collections;
[*]<span />import java.util.HashMap;
[*]<span />import java.util.List;
[*]<span />import java.util.Map;
[*]<span />
[*]<span />/**
[*] * 对字符集中字符出现的次数继续排序。
[*] * 
[*] * @author 赵学庆 www.java2000.net
[*] */<span />
[*]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);
[*]    }
[*]  }
[*]}
[*]<span />
[*]<span />class KeyValue implements Comparable {
[*]  public int compareTo(Object obj) {
[*]    if (obj instanceof KeyValue) {
[*]      KeyValue kv = (KeyValue) obj;
[*]      return kv.count - this.count;
[*]    }
[*]    return -1;
[*]  }
[*]<span />
[*]  char ch;
[*]<span />
[*]  int count;
[*]}
页: [1]
查看完整版本: 对字符串中字符出现的次数进行排序