Java 如何知道字符串中存在哪些字符,然后计算它们的出现次数?

Java 如何知道字符串中存在哪些字符,然后计算它们的出现次数?,java,string,Java,String,我有这个字符串string=“aaaaaaaaaaaadddsssaakkaaaand”我需要知道其中的字符并计算它们的出现次数,我在stackOverFlow中找到了这段代码,但它没有帮助,因为我需要在不要求用户输入字符的情况下计算字符数 public static int countOccurrences(String haystack, char needle) { int count = 0; for (int i=0; i < haystack.length();

我有这个字符串string=“aaaaaaaaaaaadddsssaakkaaaand”我需要知道其中的字符并计算它们的出现次数,我在stackOverFlow中找到了这段代码,但它没有帮助,因为我需要在不要求用户输入字符的情况下计算字符数

public static int countOccurrences(String haystack, char needle)
{
    int count = 0;
    for (int i=0; i < haystack.length(); i++)
    {
        if (haystack.charAt(i) == needle)
        {
             count++;
        }
    }
    return count;
}
public static int countoccurrencess(字符串haystack,字符指针)
{
整数计数=0;
对于(int i=0;i
我需要一种方法来知道有5个a和4个v等等。

这行吗

public static Map<Character, Integer> countOccurrences(String haystack)
{
    Map<Character, Integer> count = new HashMap<Character, Integer>();
    for (int i=0; i < haystack.length(); i++)
    {
        char c = haystack.charAt(i);
        Integer charCount = count.get(c);
        if(charCount == null) {
            count.put(c, 1);
        } else {
            count.put(c, charCount + 1);
        }
    }
    return count;
}
公共静态映射计数事件(字符串haystack)
{
映射计数=新的HashMap();
对于(int i=0;i
是否需要获取字符串中所有字符的计数?如果是这样,这样的类可能会起作用:

public class CharCounter {

  private final int[] counts = new int[Character.MAX_VALUE];

  public CharCounter(String input) {
    for (int i = 0; i < input.length(); i++) {
      counts[input.charAt(i)] += 1;
    }
  }

  public int getCount(char c) {
    return counts[c];
  }
}

我不会给你代码答案,但这个不同的想法应该会让你开始:

  • 您需要有一个空的字符数组(或arrayList)和一个空字符串,以及 当然,你的“被计算”字符串(干草堆)
  • 使用一种排序方法,通过干草堆对其进行排序 按字母顺序(去查一下,其实并不难)
  • 一旦你按字母顺序排序,再做一个for循环,通过新的, 按字母顺序排序的字符串,并将新字符添加到空字符数组中 如果位置i+1处的字符与其前面的字符不同。现在,在 在这个循环中,这个字符数组将有一个小的不同字母列表 你的原始字符串
  • 还有一个循环。。。这是最后一个。这一次,它将是一个for循环 在for循环中。外部for循环将遍历新的字符数组,而内部for循环将遍历原始字符串的字符。现在,您可以计算字符串中第一个字符出现的次数,然后是第二个、第三个、第四个。。。。每次,你都可以打印出“5 a”“6 b”等

  • 这应该行得通。让我知道

    您已将方法声明为返回int,但实际上返回的是
    Map
    。这可能会使它不起作用。@DonRoby:谢谢,修正了,实际上Keppil建议进行编辑。我的大脑有机编译失败了。这看起来像是家庭作业。与其寻找并寻求解决方案,不如自己去寻找。我敢肯定,在你被要求解决这个问题之前,你已经了解了数据结构和集合。为什么人们总是忘记字符集?这绝对是一个家庭作业!也许我们可以开始一个名为“我很懒,所以为我做吧!”的SE姐妹项目
    CharCounter counter = new CharCounter("hello world");
    System.count.println("number of 'l' characters: " + counter.getCount('l'));