1. Estadísticas El número de letras de cadena (y mantenga el orden alfabético)
Por ejemplo: AABBBBBBBBA OH BCAB CDABC DEAAA
Hay 5 maneras en que sé. Si tienes otros mejores, por favor dame algunos consejos.
// Método 1 Public static void LetterCount1 (String S) {S = S.ReplaceAll (" +", ""); // 1, convertir a la matriz de caracteres char c [] = s.tocharArray (); Map <caracteres, integer> tree = new Treemap <caracteres, integer> (); para (int i = 0; i <c.length; i ++) {// primero: a, 1 // segunda vez: a, 2 // 2, obtenga el valor correspondiente al valor entero clave = árbol.get (c [i]); // descompilar: valor entero = (entero) árbol.get (caracteres.valueof (c [i])); // 3, almacene el juicio tree.put (c [i], valor == nulo? 1: valor+1); } // Si se requiere el formato de resultado: A (5) B (4) C (3) D (2) E (1) StringBuilder sbu = new StringBuilder (); para (clave de caracteres: tree.keySet ()) {Integer count = tree.get (key); sbu.append (key) .append ("("). append (count) .append (")"); } // Convertir SBU a String System.out.println (Sbu.ToString ());} // Método 2 Use Stream // Esto será incorrecto cuando se pruebe caracteres especiales, como // n, y su orden será incorrecto. Esto es causado por MAP // SOLUCIÓN Use Treemap Public Static void LetterCount2 (String S) {S = S.ReplaceAll (" +", ""); TreeMap <String, Long> result = Arrays.stream (S.Split ("")) .sorted () // .Collect (coleccionadores.groupingBy (function.identity (), coleccionadores.counting ())); .Collect (coleccionadors.groupingBy (function.ididentity (), Treemap :: new, coleccionadores.counting ())); System.out.println (resultado); } // Método 3 use colección.Frequency // De hecho, es convertir la cadena en una colección para guardar cada cadena, y comparar cada cadena con la colección pública estática void letetCount3 (string s) {s = s.replaceall (" +", ""); List <String> list = arrays.aslist (s.split ("")); Map <string, integer> map = new Treemap <String, Integer> (); for (string str: list) {map.put (str, collections.frequency (list, str));} system.out.println (map); } // Método 4 Public static void LetterCount4 (String s) {s = s.replaceall (" +", ""); Cadena [] strs = s.split (""); Map <string, integer> map = new Treemap <String, Integer> (); for (string str: strs) {map.put (str, stringcount (s, str));} system.out.println (map); } // Método 5 Public static void LetterCount5 (String s) {s = s.replaceAll (" +", ""); Cadena [] strs = s.split (""); Map <string, integer> map = new Treemap <String, Integer> (); for (string str: strs) {map.put (str, stringCount2 (s, str));} system.out.println (map); } // use Split public static int StringCount (String maxstr, String substr) {// nota // 1. Por ejemplo, si qqqq no se encuentra, entonces la cadena se devolverá directamente // 2. Por ejemplo, qqqjava, no hay otros caracteres al final, y no se dividirá en este momento, por lo que puede agregar un espacio // 3. lleno automáticamente // 4. Para caracteres especiales, preste atención a usar el carácter de escape int count = (maxstr + "") .split (substr) .length - 1; // system.out.println ("/" + minstr + "/" + "Número de ocurrencias de cadena:" + Count); TOUNT RENTO;} // Si desea ser case -insensitivo, compilación (MinStr, CASE, CASE). StringCount2 (String maxstr, String substr) {int count = 0; matcher m = patrón.compile (substr) .matcher (maxstr); while (m.find ()) {count ++;} return Count;}2. Estadísticas El número de palabras en una cadena (solo en inglés)
Esto es en realidad lo mismo que el anterior, y solo un método simple se escribe a continuación
Public static void wordstringCount (String s) {// El comienzo es una cadena, y después de dividir se convierte en una secuencia de cadenas. MAP <String, Long> result = arrays.stream (s.split ("// s+")) .map (word-> word.replaceAll ("[^a-za-z]", "")) .collect (coleccionista.groupingby (function.ididentity (), collectors.counting ())); System.out.println (resultado); }3. Estadísticas el número de palabras de texto (solo inglés)
// Busque el número de palabras en un texto public static void wordfileCount (string ruta) lanza ioexception {// La secuencia de cadenas es primero al principio // dividido primero // en una secuencia de caracteres // filtro de mapa <string, long> dutsing = files.lines (paths.get (path), charset.defaulteSet ()) .parallel () Stream.flatmap (str-> arrays.stream (str.split (" +"))) .map (word-> word.replaceAll ("[^a-za-z]", "")) // eliminar vacía.filter (word-> word.length ()> 0) .collect (collectors.groupingby (function.identity (), collectors.counting ()); System.out.println (resultado); }4. Otros irrelevantes
Sabemos que las listas de parámetros variables se pueden pasar sin parámetros de aprobación.
para
public void testName () {System.out.println ("A"); } public void testName (String ... s) {// No se pasan los parámetros, S inicializará un objeto por defecto System.out.println ("B"); }¿Qué debo imprimir al llamar a TestName ()? Imprimirá A y coincidirá automáticamente con el método donde el parámetro está realmente vacío
El resumen anterior de varios métodos para Java8 para contar el número de letras de cadena (recomendadas) es todo el contenido compartido por el editor. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.