我有这样的程序
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的计数
等等
答案 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-collections和commons-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]);
}