Java 获取字符串中的所有字符及其编号

Java 获取字符串中的所有字符及其编号,java,string,text-parsing,repeat,Java,String,Text Parsing,Repeat,在Java中,如何获取字符串中出现的所有字符的列表,以及它们的出现次数?假设我们有一个字符串“我现在真的很忙”,所以我应该得到: i-2、a-2、r-2、m-1等等。这是家庭作业吗?在不知道的情况下,我会假设一个尽最大努力的答案 你的问题背后的逻辑是 一次只输入一个字符 计算该字符:因为可能的字符(不包括unicode)只有256个,所以您可以拥有一个256ints的数组,并在那里进行计数:这样您就不需要搜索正确的计数器,只需增加正确的索引即可 只要有每个字符及其计数的映射即可。您可以使用获取

在Java中,如何获取字符串中出现的所有字符的列表,以及它们的出现次数?假设我们有一个字符串“我现在真的很忙”,所以我应该得到:


i-2、a-2、r-2、m-1等等。这是家庭作业吗?在不知道的情况下,我会假设一个尽最大努力的答案

你的问题背后的逻辑是

  • 一次只输入一个字符
  • 计算该字符:因为可能的字符(不包括unicode)只有256个,所以您可以拥有一个256
    int
    s的数组,并在那里进行计数:这样您就不需要搜索正确的计数器,只需增加正确的索引即可

只要有每个字符及其计数的映射即可。您可以使用获取
字符串的字符数组
,并使用循环。在每次迭代中,从映射中获取计数,如果不存在,则将其设置,然后将其递增为1并放回映射中。很简单

以下是一个基本的启动示例:

String string = "I am really busy right now";
Map<Character, Integer> characterCounts = new HashMap<Character, Integer>();
for (char character : string.toCharArray()) {
    Integer characterCount = characterCounts.get(character);
    if (characterCount == null) {
        characterCount = 0;
    }
    characterCounts.put(character, characterCount + 1);
}
String=“我现在真的很忙”;
Map characterCounts=new HashMap();
for(字符:string.toCharArray()){
整数characterCount=characterCounts.get(字符);
if(characterCount==null){
characterCount=0;
}
characterCounts.put(character,characterCount+1);
}
要了解有关地图的更多信息,请查看



你评论说这是“为了一个项目”,但这是一个典型的家庭作业问题,因为它非常基本,在一本像样的Java书籍/教程的前几章中有介绍。如果您是Java新手,我建议您完成。

我不确定您的确切需求,但似乎您希望不考虑大小写而计算出现次数,也可能忽略空格等字符。因此,您可能需要这样的内容:

String initial = "I   am really   busy  right now";

String cleaned = initial.replaceAll("\\s", "") //remove all whitespace characters
        .toLowerCase(); // lower all characters

Map<Character, Integer> map = new HashMap<Character, Integer>();
for (char character : cleaned.toCharArray()) {
    Integer count = map.get(character);
    count = (count!=null) ? count + 1 : 1;
    map.put(character, count);
}

for (Map.Entry<Character, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
}
String initial=“我现在真的很忙”;
String cleaned=initial.replaceAll(“\\s”,”)//删除所有空白字符
.toLowerCase();//降低所有字符
Map Map=newhashmap();
for(字符:cleaned.toCharArray()){
整数计数=map.get(字符);
计数=(计数!=null)?计数+1:1;
map.put(字符、计数);
}
对于(Map.Entry:Map.entrySet()){
System.out.println(entry.getKey()+“:”+entry.getValue());
}
调整正则表达式以满足您的确切要求(跳过标点符号等)。

String input=“AAZERTTYAATY”;
char[]chars=input.toCharArray();
Map Map=newhashmap();
for(char-aChar:chars){
整数charCount=map.putIfAbsent(aChar,1);
if(charCount!=null){
charCount++;
map.put(亚喀尔,charCount);
}
}

定义“字符”。它是32位Unicode代码点吗?很不幸,一个字符不再是一个字符了。
        String input = "AAZERTTYAATY";
        char[] chars = input.toCharArray();
        Map<Character, Integer> map = new HashMap<>();
        for (char aChar : chars) {
            Integer charCount = map.putIfAbsent(aChar, 1);
            if (charCount != null) {
                charCount++;
                map.put(aChar, charCount);
            }
        }