Generating probability table of 2-character combinations from text file in Java
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
add a comment |
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
add a comment |
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
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
java statistics iteration hash-map
asked 20 mins ago
LuminousNutria
1242
1242
add a comment |
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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