Red de conocimiento informático - Aprendizaje de código fuente - Código fuente del artículo

Código fuente del artículo

Si se puede agregar una clase, la eficiencia de este tema será mucho mayor. . . Si hay que permanecer dentro de este marco, el código es engorroso e ineficiente.

Importar Java .Util .ArrayList

Importar Java .Util . Java . util . iterador;

Importar Java .lista de utilidades;

Importar conjunto de utilidades Java . p>

p>

Artículo público {

//Guardar el contenido del artículo

Contenido de cadena;

//Guardar la palabra establecida después segmentación de palabras.

string[]palabras sin formato;

//Guardar el conjunto de palabras estadísticas.

String[]word;

//Guarda la frecuencia de palabra correspondiente a la palabra.

int[]wordFreqs;

//Constructor, ingresa el contenido del artículo.

//Parte de mejora: lectura del archivo

Artículo público(){

content = "kolya es el más rico que he visto en mucho tiempo. Uno de los Zdenek Sverak interpreta a un viejo soltero decidido (como probablemente siempre lo será) que ve cada vez más comprometida su vida como violonchelista checo por el niño de cinco años que cuida. Aunque el final es bastante abrupto, I. Me quejo porque quería pasar más tiempo con estos personajes: los valores de actuación, escritura y producción son tan altos, si no superiores, que los de los dramas estadounidenses comparables Un deleite de padre e hijo. Sverak también escribió el guión. su hijo Jane dirigió la película, ganó un Globo de Oro a la Mejor Película en Lengua Extranjera y, unos días después de ver la película, ganó fácilmente un Oscar en checo y ruso con subtítulos en inglés";

}

// Divide el artículo en palabras según los delimitadores y guarda los resultados en una matriz rawWords.

public void splitWord(){

//Durante la segmentación de palabras, debido a que no intervienen los signos de puntuación, todos los símbolos se reemplazan por espacios.

Espacio de carácter final = "";

contenido = content.replace('\ ' ', espacio). reemplazar(',',espacio). Reemplazar('., espacio);

contenido = contenido.reemplazar(', espacio). Reemplazar (')', espacio). Reemplazar ('-', espacio);

palabras sin procesar = content. split(" \ \ s "); // Los espacios separados son todas palabras, y ' fue reemplazado arriba, así que dividí ve en dos //palabras.

}

//Estadísticas, atraviesa la matriz

public void countWordFreq() {

//Pon todas las apariciones de la cadena En una colección única, en lugar de utilizar un mapeo, porque la eficiencia de encontrar un mapeo es demasiado baja.

Establecer lt string gtset = nuevo árbol set lt string gt();

for(String word: rawWords){

set .

}

Iterador ite = set . iterador();

Lista lt cadena gtwordsList = nueva ArrayList lt cadena gt(); >List lt integer gtfreqList = new ArrayList lt integer gt();

//Cuántas cadenas se desconocen, guárdelas primero con la lista.

while(ite.hasNext()){

String word =(String)ite next();

int count = 0; El número de cadenas idénticas.

for(String str: rawWords){

if(str.equals(word)){

count;

}

}

lista de palabras . add(palabra);

lista de frecuencias . p>//Almacenado en una matriz

palabras = palabrasList.toArray(new string[0]);

wordFreqs = new int[freq list()];

for(int I = 0; i ltfreq list . size(); i ){

wordFreqs[I]= freq list get(I);

}

}

//Ordene la matriz de palabras y la matriz de frecuencia de palabras en orden descendente según la frecuencia de las palabras.

Ordenación de vacío público(){

Palabra de categoría{

Palabra de cadena privada;

Frecuencia int privada

palabra pública(palabra de cadena, int frecuencia){

esta.palabra = palabra

esta.freq = frecuencia

}

}

//Nota: La clasificación aquí es 1) primero ordenada por frecuencia de palabras en orden descendente, 2) si las frecuencias de palabras son las mismas, luego ordenadas por orden alfabético.

//Por ejemplo 'ABC'>'ab' gt; aa '

La clase WordComparator implementa el comparador {

public int compare(Objeto o 1, Objeto o2) {

Palabra Palabra 1 =(Palabra)o 1;

Palabra Palabra 2 =(Palabra)O2;

if(palabra 1 . freq lt ;palabra2.freq){

Retorno 1;

} else if(palabra 1 . frecuencia gt;palabra2.freq){

retorno-1;

}En caso contrario {

int len ​​​​1 = palabra 1 palabra trim(). longitud();

int len2 = palabra2.palabra.trim().

longitud();

cadena min = len 1 gt;len2? palabra 2. palabra: palabra 1. palabra;

cadena max = len 1 gt;len2? palabra 1 . palabra: palabra 2 .

for(int I = 0; i lt longitud mínima (); i ) {

if (min . charat (I) lt ; Máximo charAt(i)){

devuelve 1;

}

}

devuelve 1;

}

}

}

Lista lista de palabras = new ArrayList ltWord gt();

for(int I = 0; i ltwords.lengthi ){

wordList.add(new Word(palabras[i], wordFreqs[I]);

}

Colecciones.sort(wordList , nuevo comparador de palabras());

for(int I = 0;i ltlista de palabras . size(); i ){

Palabra wor =(Palabra)Lista de palabras obtener. (I);

palabras[I]= palabra de trabajo;

freqs de palabra[I]= frecuencia de trabajo;

}

}

//Envía los resultados de la clasificación.

public void printResult() {

system . println(" Total " palabras . length "¡Diferentes palabras en el contenido!"); (int I = 0; iltwords.lengthi){

sistema fuera . println(wordFreqs[I] " " palabras[I]);

}

}

//Función de clase de prueba

Public static void main(String[] args) {

Artículo a = nuevo artículo();

a . dividir palabra();

a . contar palabrafreq();

a ordenar()

a . );

}

}

-

¡Hay 99 palabras diferentes en el contenido!

5 y

4 el

4 i

4 a

3 a

2 con

2 que

2 a

2 veces

2 Sverak

2 hijos

2 s

2 años

Página 2 de 2 it

2 pulgadas

2 his

2 checos

1 Zdenek

1 año

1 escrito

1 escrito

1 ganó

1 se quejó

1 mientras

1 quería

p>

1 se fue

1 ve

1 valor

1 aunque

1 esto

1 estos

1 aquello

1 que

1 toma

1 subtítulos

1 gasto

1 algo

1 así

ver 1

1 guión

1 visto

1 ruso

1 más rico

Resto 1

1 Exacto

1 Producción

1 obra

1 Oscar

1 uno

1 no

1 actualización

1 metro

p>

1 Posibilidad

1 Vida

1 idioma

1 kolya

1 de enero

1 es

1 está aumentando

1 está afectado

1 si

1 es superior

1 Alto

1 Ho

1 Dorado

1 Globo

1 En el extranjero

1 Usado para

1 Cinco

1 Descubrimiento

1 Película

1 Película

1 Padre

1 Inglés

1 Fin

1 Drama

1 Orientación

1 Alegría

1 Día

1 Pareja

1 Confirmado

1 Comparable

1 Personaje

1 Violonchelista

p>

1 Razón

1 Cuidado

1 Por

1 Chico

1 Mejor

1 Soltero

1 Lejos

1 Sí

1 Un

1 americano

<

p>1 también

1 después

1 habilidad de actuación

1 de repente