1.
Por exemplo: AABBBBBBBBA OH BCAB CDABC DEAAA
Existem 5 maneiras que eu conheço. Se você tiver algum melhor, me dê alguns conselhos.
// Método 1 public static void LetterCount1 (String s) {s = s.Replaceall (" +", ""); // 1, converta para a matriz de caracteres char c [] = s.toCharArray (); Mapa <caractere, número inteiro> árvore = novo Treemap <caractere, inteiro> (); para (int i = 0; i <c.Length; i ++) {// primeiro: a, 1 // Segunda vez: a, 2 // 2, obtenha o valor correspondente ao valor inteiro da chave = árvore.get (c [i]); // decompile: valor inteiro = (inteiro) árvore.get.get.valueof (c [i]); // 3, armazene a árvore de julgamento.put (c [i], value == null? 1: valor+1); } // Se o formato de resultado for necessário: a (5) b (4) c (3) d (2) e (1) stringbuilder sbu = new stringbuilder (); para (tecla de caractere: árvore.KeySet ()) {Inteiro contagem = árvore.get (key); sbu.append (key) .append ("("). Append (count) .append (")"); } // Converte sbu em string system.out.println (sbu.toString ());} // Método 2 Use Stream // Isso estará incorreto ao testar caracteres especiais, como // n, e seu pedido estará incorreto. Isso é causado pelo mapa // Solução Use Treemap public static void LetterCount2 (String s) {s = s.Replaceall (" +", ""); Treemap <String, Long> resultado = Arrays.Stream (S.Split ("")) .SortEd () // .Collect (Collectors.Groupingby (function.Identity (), Collectors.Concing ())); .Collect (Collectors.GroupingBy (function.Identity (), Treemap :: new, colectors.counting ())); System.out.println (resultado); } // Método 3 Use coleções. List <String> list = Arrays.asList (s.split ("" ")); Mapa <string, número inteiro> map = new Treemap <string, inteiro> (); para (String str: list) {map.put (str, coleta.frequency (list, str));} system.out.println (map); } // Método 4 public static void letterCount4 (strings s) {s = s.replaceall (" +", ""); String [] strs = s.split (""); Mapa <string, número inteiro> map = new Treemap <string, inteiro> (); for (String str: strs) {map.put (str, stringCount (s, str));} system.out.println (map); } // Método 5 public static void letterCount5 (strings s) {s = s.Replaceall (" +", ""); String [] strs = s.split (""); Mapa <string, número inteiro> map = new Treemap <string, inteiro> (); for (String str: strs) {map.put (str, stringCount2 (s, str));} system.out.println (map); } // Use Split public static int stringCount (string maxstr, string substr) {// note // 1. Por exemplo, se o qqqq não for encontrado, a sequência será retornada diretamente // 2. Por exemplo, o QQJJava, não há outros caracteres. será preenchido automaticamente // 4. Para caracteres especiais, preste atenção ao uso do caractere de fuga int count = (maxstr + "") .split (substr) .Length - 1; // System.out.println ("/" " + MINSTR +"/"" + "Número de strings:" Min); Int StringCount2 (String maxstr, String substr) {int conting = 0; Matcher m = Pattern.compile (substr) .matcher (maxstr); while (m.find ()) {count ++;} contagem de retorno;}2. Estatísticas O número de palavras em uma string (somente em inglês)
Na verdade, é o mesmo que acima, e apenas um método simples está escrito abaixo
public static void wordstringCount (strings) {// O começo é uma string e, após a divisão, ela se torna um fluxo de string. Mapa <string, long> resultado = arrays.stream (s.split ("// s+")) .map (word-> word.replaceall ("[^a-za-z]", "") .Collect (colecionors.groupingby (function.Identity (), collectors.cings.cings)); System.out.println (resultado); }3. Estatísticas O número de palavras de texto (somente em inglês)
// Pesquise o número de palavras em um texto public estático void wordfileCount (caminho da string) lança ioexception {// O fluxo da string é o primeiro no começo // divide o primeiro // em um fluxo de caracteres // filtro mapa <string, long> resulting = files.lines (paths.get (path), charset.defulcharteset (). Stream.flatmap (str-> Arrays.Stream (str.split (" +"))) .map (word-> word.replaceall ("[^a-za-z]", "") // remover empty.filter (word-> word.length ()> 0) .collect.. System.out.println (resultado); }4. Outro irrelevante
Sabemos que as listas de parâmetros variáveis podem ser passadas sem os parâmetros de passagem.
para
public void testName () {System.out.println ("A"); } public void testName (string ... s) {// Nenhum parâmetros é passado, S inicializará um objeto por padrão System.out.println ("B"); }O que devo imprimir ao chamar testName ()? Ele imprimirá um e corresponderá automaticamente ao método em que o parâmetro está realmente vazio
O resumo acima de vários métodos para Java8 para contar o número de letras de string (recomendado) é o conteúdo inteiro compartilhado pelo editor. Espero que possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.