Generating probability table of 2-character combinations from text file in Java












0














I have written a probability table generator in Java to help me generate randomized girl's names for the game I am making.



It reads from a text file and creates a HashMap<String, Double> full of two-character combinations and their rate of incidence.



I don't have a lot of experience with either probability tables or Java in general.



I would like help making it run faster



Example text from input file:



Each line has ten names.
The actual textfile doesn't have spaces between lines.




Marva Kandy Debbi Louisa Edris Orpha Lynn Louise Reyna Jacki Evangeline



Ray Sienna Alecia Elin Debby Noreen Alishia Michael Evangelina Eliz



Usha Ladawn Dominga Cynthia Marty Shayla Sanora Betsey Ira Jodee



Qiana Elia Elke Torie Amirah Marta Lavonna Ozie Lavonne Teofila



Latoria Catharine Epifania Susy Keli Delpha Isa Marth Rosina Marti



Jordan Ella Theda Tyesha Rana Francesca Shayna Letha Shayne Marry



Rea Joellen Fidela Kandi Celeste Salina Kamryn Jenelle Celena Celesta



Kenyatta Ada Shelia Maribel Edith Lorilee Jazmyn Myrtice Kena Laurence




My code



public class MCVE {

public static void main(String args) throws Exception {
String address = "./res/text_files/Human_FirstNames";
HashMap<String, Double> frequencies = new HashMap<>();

FileReader fr = new FileReader(address);
BufferedReader br = new BufferedReader(fr);

String aLine = "";
String wholeString = "";
while((aLine = br.readLine()) != null) {
wholeString += aLine.replaceAll(System.lineSeparator(), " ");
}

char charArr = wholeString.toLowerCase().toCharArray();
int length = charArr.length;

String tempString = "";
for(int i = 0; i < length; i++) {

if(i + 1 == length)
break;

if(charArr[i] != ' ' && charArr[i + 1] != ' ') {
tempString = Character.toString(charArr[i]) + Character.toString(charArr[i + 1]);
if (frequencies.containsKey(tempString))
frequencies.replace(tempString, frequencies.get(tempString) + 1.0);
else
frequencies.put(tempString, 1.0);
}
}

double mapLength = frequencies.size();
Iterator iter = frequencies.entrySet().iterator();
while(iter.hasNext()) {
HashMap.Entry pair = (HashMap.Entry)iter.next();

frequencies.replace((String) pair.getKey(), (Double) pair.getValue() / mapLength);

System.out.println(pair.getKey() + " " + pair.getValue());
iter.remove();
}
}
}









share|improve this question



























    0














    I have written a probability table generator in Java to help me generate randomized girl's names for the game I am making.



    It reads from a text file and creates a HashMap<String, Double> full of two-character combinations and their rate of incidence.



    I don't have a lot of experience with either probability tables or Java in general.



    I would like help making it run faster



    Example text from input file:



    Each line has ten names.
    The actual textfile doesn't have spaces between lines.




    Marva Kandy Debbi Louisa Edris Orpha Lynn Louise Reyna Jacki Evangeline



    Ray Sienna Alecia Elin Debby Noreen Alishia Michael Evangelina Eliz



    Usha Ladawn Dominga Cynthia Marty Shayla Sanora Betsey Ira Jodee



    Qiana Elia Elke Torie Amirah Marta Lavonna Ozie Lavonne Teofila



    Latoria Catharine Epifania Susy Keli Delpha Isa Marth Rosina Marti



    Jordan Ella Theda Tyesha Rana Francesca Shayna Letha Shayne Marry



    Rea Joellen Fidela Kandi Celeste Salina Kamryn Jenelle Celena Celesta



    Kenyatta Ada Shelia Maribel Edith Lorilee Jazmyn Myrtice Kena Laurence




    My code



    public class MCVE {

    public static void main(String args) throws Exception {
    String address = "./res/text_files/Human_FirstNames";
    HashMap<String, Double> frequencies = new HashMap<>();

    FileReader fr = new FileReader(address);
    BufferedReader br = new BufferedReader(fr);

    String aLine = "";
    String wholeString = "";
    while((aLine = br.readLine()) != null) {
    wholeString += aLine.replaceAll(System.lineSeparator(), " ");
    }

    char charArr = wholeString.toLowerCase().toCharArray();
    int length = charArr.length;

    String tempString = "";
    for(int i = 0; i < length; i++) {

    if(i + 1 == length)
    break;

    if(charArr[i] != ' ' && charArr[i + 1] != ' ') {
    tempString = Character.toString(charArr[i]) + Character.toString(charArr[i + 1]);
    if (frequencies.containsKey(tempString))
    frequencies.replace(tempString, frequencies.get(tempString) + 1.0);
    else
    frequencies.put(tempString, 1.0);
    }
    }

    double mapLength = frequencies.size();
    Iterator iter = frequencies.entrySet().iterator();
    while(iter.hasNext()) {
    HashMap.Entry pair = (HashMap.Entry)iter.next();

    frequencies.replace((String) pair.getKey(), (Double) pair.getValue() / mapLength);

    System.out.println(pair.getKey() + " " + pair.getValue());
    iter.remove();
    }
    }
    }









    share|improve this question

























      0












      0








      0







      I have written a probability table generator in Java to help me generate randomized girl's names for the game I am making.



      It reads from a text file and creates a HashMap<String, Double> full of two-character combinations and their rate of incidence.



      I don't have a lot of experience with either probability tables or Java in general.



      I would like help making it run faster



      Example text from input file:



      Each line has ten names.
      The actual textfile doesn't have spaces between lines.




      Marva Kandy Debbi Louisa Edris Orpha Lynn Louise Reyna Jacki Evangeline



      Ray Sienna Alecia Elin Debby Noreen Alishia Michael Evangelina Eliz



      Usha Ladawn Dominga Cynthia Marty Shayla Sanora Betsey Ira Jodee



      Qiana Elia Elke Torie Amirah Marta Lavonna Ozie Lavonne Teofila



      Latoria Catharine Epifania Susy Keli Delpha Isa Marth Rosina Marti



      Jordan Ella Theda Tyesha Rana Francesca Shayna Letha Shayne Marry



      Rea Joellen Fidela Kandi Celeste Salina Kamryn Jenelle Celena Celesta



      Kenyatta Ada Shelia Maribel Edith Lorilee Jazmyn Myrtice Kena Laurence




      My code



      public class MCVE {

      public static void main(String args) throws Exception {
      String address = "./res/text_files/Human_FirstNames";
      HashMap<String, Double> frequencies = new HashMap<>();

      FileReader fr = new FileReader(address);
      BufferedReader br = new BufferedReader(fr);

      String aLine = "";
      String wholeString = "";
      while((aLine = br.readLine()) != null) {
      wholeString += aLine.replaceAll(System.lineSeparator(), " ");
      }

      char charArr = wholeString.toLowerCase().toCharArray();
      int length = charArr.length;

      String tempString = "";
      for(int i = 0; i < length; i++) {

      if(i + 1 == length)
      break;

      if(charArr[i] != ' ' && charArr[i + 1] != ' ') {
      tempString = Character.toString(charArr[i]) + Character.toString(charArr[i + 1]);
      if (frequencies.containsKey(tempString))
      frequencies.replace(tempString, frequencies.get(tempString) + 1.0);
      else
      frequencies.put(tempString, 1.0);
      }
      }

      double mapLength = frequencies.size();
      Iterator iter = frequencies.entrySet().iterator();
      while(iter.hasNext()) {
      HashMap.Entry pair = (HashMap.Entry)iter.next();

      frequencies.replace((String) pair.getKey(), (Double) pair.getValue() / mapLength);

      System.out.println(pair.getKey() + " " + pair.getValue());
      iter.remove();
      }
      }
      }









      share|improve this question













      I have written a probability table generator in Java to help me generate randomized girl's names for the game I am making.



      It reads from a text file and creates a HashMap<String, Double> full of two-character combinations and their rate of incidence.



      I don't have a lot of experience with either probability tables or Java in general.



      I would like help making it run faster



      Example text from input file:



      Each line has ten names.
      The actual textfile doesn't have spaces between lines.




      Marva Kandy Debbi Louisa Edris Orpha Lynn Louise Reyna Jacki Evangeline



      Ray Sienna Alecia Elin Debby Noreen Alishia Michael Evangelina Eliz



      Usha Ladawn Dominga Cynthia Marty Shayla Sanora Betsey Ira Jodee



      Qiana Elia Elke Torie Amirah Marta Lavonna Ozie Lavonne Teofila



      Latoria Catharine Epifania Susy Keli Delpha Isa Marth Rosina Marti



      Jordan Ella Theda Tyesha Rana Francesca Shayna Letha Shayne Marry



      Rea Joellen Fidela Kandi Celeste Salina Kamryn Jenelle Celena Celesta



      Kenyatta Ada Shelia Maribel Edith Lorilee Jazmyn Myrtice Kena Laurence




      My code



      public class MCVE {

      public static void main(String args) throws Exception {
      String address = "./res/text_files/Human_FirstNames";
      HashMap<String, Double> frequencies = new HashMap<>();

      FileReader fr = new FileReader(address);
      BufferedReader br = new BufferedReader(fr);

      String aLine = "";
      String wholeString = "";
      while((aLine = br.readLine()) != null) {
      wholeString += aLine.replaceAll(System.lineSeparator(), " ");
      }

      char charArr = wholeString.toLowerCase().toCharArray();
      int length = charArr.length;

      String tempString = "";
      for(int i = 0; i < length; i++) {

      if(i + 1 == length)
      break;

      if(charArr[i] != ' ' && charArr[i + 1] != ' ') {
      tempString = Character.toString(charArr[i]) + Character.toString(charArr[i + 1]);
      if (frequencies.containsKey(tempString))
      frequencies.replace(tempString, frequencies.get(tempString) + 1.0);
      else
      frequencies.put(tempString, 1.0);
      }
      }

      double mapLength = frequencies.size();
      Iterator iter = frequencies.entrySet().iterator();
      while(iter.hasNext()) {
      HashMap.Entry pair = (HashMap.Entry)iter.next();

      frequencies.replace((String) pair.getKey(), (Double) pair.getValue() / mapLength);

      System.out.println(pair.getKey() + " " + pair.getValue());
      iter.remove();
      }
      }
      }






      java statistics iteration hash-map






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 20 mins ago









      LuminousNutria

      1242




      1242



























          active

          oldest

          votes











          Your Answer





          StackExchange.ifUsing("editor", function () {
          return StackExchange.using("mathjaxEditing", function () {
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          });
          });
          }, "mathjax-editing");

          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "196"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f210325%2fgenerating-probability-table-of-2-character-combinations-from-text-file-in-java%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f210325%2fgenerating-probability-table-of-2-character-combinations-from-text-file-in-java%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          404 Error Contact Form 7 ajax form submitting

          How to know if a Active Directory user can login interactively

          Refactoring coordinates for Minecraft Pi buildings written in Python