¡Urgente! Utilice el lenguaje JAVA para implementar experimentos de estructura de datos.
Te envié lo que pasé la mayor parte del día escribiendo para ti. No escribí los comentarios con cuidado. Si no entiendes nada o si tienes algún pequeño error, déjame un mensaje. .
importar java.io.BufferedReader
importar java.io.FileInputStream
importar java.io.FileNotFoundException
importar; java.io.IOException;
importar java.io.InputStreamReader
importar java.util.ArrayList
importar java.util.Enumeration; p>
p>
importar java.util.Hashtable
importar java.util.Iterator
importar java.util.List
<; p>importar java. util.Vector;prueba de clase pública {
//archivo de lectura de E/S
cadena pública getFile (ruta de cadena) {
StringBuffer contexto = new StringBuffer();
prueba {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ruta))
String temp = br.readLine();
mientras (temp!=null) {
context.append(temp+"\n");
temp = br.readLine();
}
} catch (FileNotFoundException e) {
// TODO Bloque de captura generado automáticamente p>
e.printStackTrace();
} catch (IOException e) {
// TODO Bloque catch generado automáticamente
e.printStackTrace ();
}
return context.toString().toLowerCase();
}
//Método de contenido dividido
Lista pública mySplit(String context) {
String[] palabras = {}
Listar todo = new ArrayList(); >//Presione Puntuación, expresión regular para dividir contenido
String regex = "\\W";//[():,./'\"\n\r\f\\s-] p>
palabras = contexto.split(regex);
for(int i=0; i if(!palabras [i ].equals(""))//Eliminar espacios all.add(words[i]); } return all; /p> all.add(words[i]); devolver todo p> } //Cuenta todo; palabras y su número public Hashtable c ontWords(List all) { //Se utiliza para guardar todas las palabras y su número Hashtable allTable = new Hashtable(); 0; i //Dos variables temporales, una clave y un valor String temp = all.get(i) .toString( ); int recuento = 0; for(int j=0; j if (temp. igual aIgnoreCase(all.get(j).toString())) { count++ } } allTable.put (temp, count); } return allTable; } //Encuentra el número más grande de esas cinco palabras p> public Hashtable findMax5(Hashtable allTable) { //Hashtable utilizado para guardar el resultado Resultado de Hashtable = new Hashtable(); Objeto[] keyToValue = allTable.entrySet().toArray(); Objeto[] valores = allTable.values().toArray() int[] v; = nuevo int[5]; for(int i=0; i int valor = Integer.parseInt(values[ i].toString ()); int min = findMin(v); if(valor>min) { for(int j=0 ; j if(v[j]==min) { v[j] = valor romper ; > } } } } //Reducir el valor de v Clasificarlo en pedidos pequeños p> for(int i=0; i for(int j=i+1; j if(v[i] int temp = v[i] v[i] = v [j]; p> v[j] = temp; } } } para (int i=0; i // System.out.println(v[i]); for(int j=0; j String ktv = keyToValue[j].toString(); int tv = Integer.parseInt(ktv.substring(ktv.indexOf( "=")+1 )); if(v[i]==tv) { //Garantiza tomar solo las cinco palabras más frecuentes if(result.size()>=5) break; /p> Clave de cadena = ktv.substring(0, ktv.indexOf("=")); resultado.put(clave, v[i]); >} } } resultado de retorno; } //Búsqueda simple en matriz número más pequeño public int findMin(int[] v) { for(int i=0; i si(v[i] int temp = v[i] v[i] = v[i+1 ]; v[i+1] = temp } } return v[v.length-1] ; /p> } //Imprimir el resultado public static void printResult(resultado de tabla hash) { System.out.println( "El Las cinco palabras principales son las siguientes:"); Enumeración e = result.keys(); Iterador it = result.values().iterator(); p> while (e.hasMoreElements()) { System.out.println(e.nextElement() + " El número de " es: " + it.next() System.out.println(e.nextElement() + " p> } } //método principal public static void main(String[] args) { Prueba prueba = new Test(); Contexto de cadena = test.getFile("c:/test3. txt"); Listar todo = test.mySplit(context); Hashtable allTable = test.contWords(all); Resultado de Hashtable = prueba. findMax5(allTable); // System.out.println(resultado) Test.printResult(resultado); p>}