Java列表问题

时间:2010-02-01 12:29:45

标签: java list collections

我有这样的程序

public class no_of_letters_count {
static int i;
 public static void main(String[] args) 
 {

  String sMessage="hello how r u";
  String saMessage[] = sMessage.split("");
  List sList = Arrays.asList(saMessage);                  
  Collections.sort(sList);
  Iterator i=sList.iterator();
  while (i.hasNext())
  {
   System.out.println((String)i.next());
  }
 }
}

//Now i want to count the number of occurance of each characters.

喜欢

h = 2的计数

e = 1的计数

等等

4 个答案:

答案 0 :(得分:4)

迭代sList并将每个char放入HashMap。如果它不存在,则从count 1开始,否则递增计数。

编辑:不禁发布一些代码。

首先,使用gnerics。

List<Character> sList = Arrays.asList(saMessage.toCharArray()); 

然后使用以下地图:

Map<Character, Integer> cmap = new HashMap<Character, Integer>();

答案 1 :(得分:1)

使用commons-collectionscommons-lang

List<Character> chars = Arrays.asList(
     ArrayUtils.toObject("asdfasdas".toCharArray()));
Bag bag = new HashBag(chars);

System.out.println(bag.getCount('a'));

答案 2 :(得分:0)

以下是一些提示:

似乎你只是试图让String中的字符变为现实。使用String.toCharArray()

使用Map<Character,Integer>存储字符及其出现位置:

foreach char c in sMessage.ToCharArray()
if map.containsKey(c)
  map.put(c, map.get(c) + 1);
else
  map.put(c, 1);

接下来对地图进行排序并显示结果。我在这里留下一个片段来对地图进行排序:

    List<Entry<Character,Integer>> l = new ArrayList<Entry<Character,Integer>>(map.entrySet());

    Collections.sort(l, new Comparator<Entry<Character,Integer>>() {
        public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2) {
            return o1.getKey().compareTo(o2.getKey());
        }
    });

答案 3 :(得分:0)

打印A-Z和a-z

中出现的字符数

注意:使用字符作为数组索引,如果你有Unicode字符:)不安全,但我认为还是好主意!!

String str = "sometext anything";
int[] array=new int[256];

for (int x:array) array[x]=0;

for (char c:str.toCharArray()){
    array[c]++;
}

for (int i=65;i<=90; i++){
    System.out.println("Number of "+(char)i+ "="+array[i]
                + ", number of "+(char)(i+32)+"="+ array[i+32]);
}