Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Dizionario - Dizionario.java

Dizionario.java

Caricato da:
Scarica il programma completo

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package dizionario;
  6.  
  7. import java.io.BufferedReader;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.io.InputStreamReader;
  11. import java.util.ArrayList;
  12.  
  13. /**
  14.  *
  15.  * @author Paolo
  16.  */
  17. public class Dizionario {
  18.  
  19.     private ArrayList<String> parole;
  20.     private long caricamento;
  21.  
  22.     /**
  23.      * Il costruttore di default del Dizionario. Carica le parole.
  24.      */
  25.     public Dizionario() {
  26.         this.parole = new ArrayList<String>();
  27.         Charge charge = new Charge();
  28.         charge.start();
  29.         try {
  30.             charge.join();
  31.         } catch (InterruptedException ex) {
  32.         }
  33.  
  34.     }
  35.  
  36.     private class Charge extends Thread {
  37.  
  38.         @Override
  39.         public void run() {
  40.             InputStream diz = getClass().getResourceAsStream("/dizionario/volume/diz.txt");
  41.             BufferedReader br = new BufferedReader(new InputStreamReader(diz));
  42.             long dim = 8987315;
  43.             String appoggio = "";
  44.             int i = 0;
  45.             try {
  46.                 while ((appoggio = br.readLine()) != null) {
  47.                     parole.add(appoggio);
  48.                     i = i + appoggio.length() + 2;
  49.                     caricamento = (i * 100) / dim;
  50.                 }
  51.             } catch (IOException ex) {
  52.             }
  53.         }
  54.     }
  55.  
  56.     /**
  57.      * Ricerca una parola all'interno del Dizionario
  58.      * @param pWord La parola da ricercare
  59.      * @return <code>true</code> se la parola è presente, <code>false</code><br>
  60.      * in caso contrario.
  61.      */
  62.     public boolean searchWord(String pWord) {
  63.         pWord = pWord.toLowerCase();
  64.         for (int i = 0; i < this.parole.size(); i++) {
  65.             if (this.parole.get(i).equals(pWord)) {
  66.                 return true;
  67.             }
  68.         }
  69.         return false;
  70.     }
  71.  
  72.     /**
  73.      * Ritorna tutte le parole che contengono <code>pWord</code>.
  74.      * @param pWord La parola da ricercare.
  75.      * @return Una ArrayList cointenente tutte le parole.
  76.      */
  77.     public ArrayList<String> searchContainsWords(String pWord) {
  78.         pWord = pWord.toLowerCase();
  79.         ArrayList<String> containsWords = new ArrayList<String>();
  80.         for (int i = 0; i < this.parole.size(); i++) {
  81.             if (this.parole.get(i).contains(pWord)) {
  82.                 containsWords.add(this.parole.get(i));
  83.             }
  84.         }
  85.         return containsWords;
  86.     }
  87.  
  88.     /**
  89.      * Ritorna tutte le parole che iniziano per <code>pWord</code>.
  90.      * @param pWord La parola da ricercare.
  91.      * @return Una ArrayList cointenente tutte le parole.
  92.      */
  93.     public ArrayList<String> searchStartWhitWords(String pWord){
  94.         pWord = pWord.toLowerCase();
  95.         ArrayList<String> startWhitWords = new ArrayList<String>();
  96.         for (int i = 0; i < this.parole.size(); i++) {
  97.             if (this.parole.get(i).startsWith(pWord)) {
  98.                 startWhitWords.add(this.parole.get(i));
  99.             }
  100.         }
  101.         return startWhitWords;
  102.     }
  103.  
  104.         /**
  105.      * Ritorna tutte le parole che finiscono per <code>pWord</code>.
  106.      * @param pWord La parola da ricercare.
  107.      * @return Una ArrayList cointenente tutte le parole.
  108.      */
  109.     public ArrayList<String> searchEndWhitWords(String pWord){
  110.         pWord = pWord.toLowerCase();
  111.         ArrayList<String> startEndWords = new ArrayList<String>();
  112.         for (int i = 0; i < this.parole.size(); i++) {
  113.             if (this.parole.get(i).endsWith(pWord)) {
  114.                 startEndWords.add(this.parole.get(i));
  115.             }
  116.         }
  117.         return startEndWords;
  118.     }
  119.  
  120.     public String randomWord(){
  121.         double random= Math.random()*this.parole.size();
  122.         int rand= (int) random;
  123.         return this.parole.get(rand);
  124.     }
  125.  
  126.     public static void main(String... args) throws IOException {
  127.         Dizionario d = new Dizionario();
  128.         System.out.print("Inserire parola da ricercare: ");
  129.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  130.         String parola = br.readLine();
  131.         if (d.searchWord(parola)) {
  132.             System.out.println("La parola " + parola + " esiste");
  133.             ArrayList<String> parole = new ArrayList<String>();
  134.             parole = d.searchContainsWords(parola);
  135.             System.out.println("Elenco parole che contengono " + parola + "(" + parole.size() + "):");
  136.             for (int i = 0; i < parole.size(); i++) {
  137.                 System.out.println(parole.get(i));
  138.             }
  139.             parole = d.searchStartWhitWords(parola);
  140.             System.out.println("Elenco parole che iniziano per " + parola + "(" + parole.size() + "):");
  141.             for (int i = 0; i < parole.size(); i++) {
  142.                 System.out.println(parole.get(i));
  143.             }
  144.             parole = d.searchEndWhitWords(parola);
  145.             System.out.println("Elenco parole che finiscono per " + parola + "(" + parole.size() + "):");
  146.             for (int i = 0; i < parole.size(); i++) {
  147.                 System.out.println(parole.get(i));
  148.             }
  149.         } else {
  150.             System.out.println("La parola " + parola + " non esiste");
  151.         }
  152.         System.out.println("Una parola a caso: "+d.randomWord());
  153.     }
  154. }