Advertisement
Beckham777

Untitled

May 22nd, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. public class FrequencyDictionary {
  2.  
  3. private int addWordStat(StringBuilder addWord, HashMap<String, WordCounter> frequencyDictionary) {
  4. WordCounter wordCounter;
  5.  
  6. if (addWord.length() > 0) {
  7. wordCounter= frequencyDictionary.get(addWord.toString());
  8.  
  9. if (wordCounter == null) {
  10. frequencyDictionary.put(addWord.toString(), new WordCounter(addWord.toString(), 1));
  11. }
  12. else
  13. wordCounter.incCount();
  14.  
  15. return 1;
  16. }
  17.  
  18. return 0;
  19. }
  20.  
  21. public void formFrequencyDictionary(Reader readerData, HashMap<String, WordCounter> frequencyDictionary) {
  22. //Scanner scnData= new Scanner(readerData);
  23. int countAllWords= 0;
  24. StringBuilder wordBuilder= new StringBuilder();
  25. int ch;
  26.  
  27. try {
  28. while ((ch= readerData.read()) > -1) {
  29. if (Character.isLetterOrDigit(ch)) {
  30. wordBuilder.append((char)ch);
  31. }
  32. else {
  33. countAllWords+= addWordStat(wordBuilder, frequencyDictionary);
  34. wordBuilder.setLength(0);
  35. }
  36. }
  37. }
  38. catch (IOException e) {
  39. System.err.println("Ошибка при считывании данных из файла!!!");
  40. }
  41.  
  42. countAllWords+= addWordStat(wordBuilder, frequencyDictionary);
  43.  
  44. System.out.println("Размер словаря " + frequencyDictionary.size());
  45.  
  46. for (Map.Entry<String, WordCounter> entry: frequencyDictionary.entrySet()) {
  47. entry.getValue().calcFrequency(countAllWords);
  48. }
  49. }
  50.  
  51. public void sortAndWriteFrequencyDictionary(Writer fwt, HashMap<String, WordCounter> frequencyDictionary) {
  52. // TreeSet<WordCounter> sortedWordCounter= new TreeSet<WordCounter>();
  53. ArrayList<WordCounter> sortedWordCounter= new ArrayList<WordCounter>();
  54.  
  55. if ((fwt != null) && (frequencyDictionary != null))
  56. {
  57. /* for (Map.Entry<String, WordCounter> entry: frequencyDictionary.entrySet()) {
  58. sortedWordCounter.add(entry.getValue());
  59. }
  60. */
  61. for (Map.Entry<String, WordCounter> entry: frequencyDictionary.entrySet()) {
  62. sortedWordCounter.add(entry.getValue());
  63. }
  64. Collections.sort(sortedWordCounter);
  65.  
  66. for (WordCounter wc: sortedWordCounter) {
  67. try {
  68. fwt.append(wc.getWordCounterData());
  69. //fwt.write(wc.getWordCounterData());
  70. fwt.flush();
  71. } catch (IOException e) {
  72. System.err.println("Ошибка записи!!!");
  73. break;
  74. }
  75. }
  76. }
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement