×

Welcome to TagMyCode

Please login or create account to add a snippet.
1
0
 
0
Language: Java
Posted by: Shamir Yona
Added: Oct 7, 2015 4:50 PM
Views: 9
Tags: no tags
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package OtherTests;
  7.  
  8. import java.io.BufferedReader;
  9. import java.io.FileNotFoundException;
  10. import java.io.FileReader;
  11. import java.io.IOException;
  12. import java.io.InputStreamReader;
  13. import java.util.ArrayList;
  14. import java.util.Arrays;
  15. import java.util.Collections;
  16. import java.util.Comparator;
  17. import java.util.HashMap;
  18. import java.util.Map.Entry;
  19. import java.util.Set;
  20. import java.util.TreeMap;
  21. import java.util.TreeSet;
  22. import java.util.logging.Level;
  23. import java.util.logging.Logger;
  24.  
  25. /**
  26.  *
  27.  * @author shayzukerman
  28.  */
  29. public class MaxDuplicateWordCount
  30. {
  31.     String fileName;
  32.  
  33.     public MaxDuplicateWordCount(String fileName)
  34.     {
  35.         this.fileName = fileName;
  36.     }
  37.    
  38.     public void readFile()
  39.     {
  40.         HashMap<String, Integer> wordsMap = new HashMap<>();
  41.         String str = null;
  42.         try (BufferedReader reader = new BufferedReader(new FileReader(fileName)))
  43.         {
  44.             while ((str = reader.readLine()) != null)
  45.             {
  46.                 String[] wordsInLine = str.split("[ \t,.]+");
  47.                 for (String word : wordsInLine)
  48.                 {
  49.                     Integer currCnt = wordsMap.get(word);
  50.                     currCnt = (currCnt != null) ? currCnt + 1 : 1;
  51.                     wordsMap.put(word, currCnt);
  52.                 }
  53.             }
  54.         }
  55.         catch (FileNotFoundException ex)
  56.         {
  57.             Logger.getLogger(MaxDuplicateWordCount.class.getName()).log(Level.SEVERE, null, ex);
  58.         }
  59.         catch (IOException ex)
  60.         {
  61.             Logger.getLogger(MaxDuplicateWordCount.class.getName()).log(Level.SEVERE, null, ex);
  62.         }
  63.         System.out.println(wordsMap);
  64.        
  65.         Set<Entry<String, Integer>> nameCnt = wordsMap.entrySet();
  66.         System.out.println(nameCnt);
  67.        
  68.         ArrayList<Entry<String, Integer>> arrList = new ArrayList<>(nameCnt);
  69.        
  70.         System.out.println("Before Sort:\n");
  71.         for (Entry<String, Integer> ent : arrList)
  72.             System.out.format("%s -> %d\n", ent.getKey(), ent.getValue());
  73.        
  74.         Collections.sort(arrList, new Comparator<Entry<String, Integer>>(){
  75.  
  76.             @Override
  77.             public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2)
  78.             {
  79.                 return(o2.getValue().compareTo(o1.getValue()));
  80.             }
  81.         });
  82.         System.out.println("\n\nAfter Sort:\n");
  83.         for (Entry<String, Integer> ent : arrList)
  84.             System.out.format("%s -> %d\n", ent.getKey(), ent.getValue());
  85.        
  86.        
  87. //        Object[] arr = (Object[]) nameCnt.toArray();
  88. //        System.out.println("Before Sort:\n");
  89. //        for (int i = 0; i < arr.length; i++)
  90. //        {
  91. //            Entry<String, Integer> ent = (Entry<String, Integer>) arr[i];
  92. //            System.out.format("%s -> %d\n", ent.getKey(), ent.getValue());
  93. //        }
  94. //        
  95. //        Arrays.sort(arr, new Comparator<Object>() {
  96. //
  97. //            @Override
  98. //            public int compare(Object o1, Object o2)
  99. //            {
  100. //                Entry<String, Integer> ent1 = (Entry<String, Integer>) o1;
  101. //                Entry<String, Integer> ent2 = (Entry<String, Integer>) o2;
  102. //                return(ent2.getValue().compareTo(ent1.getValue()));
  103. //            }
  104. //        });
  105. //        System.out.println("After Sort:\n");
  106. //        for (int i = 0; i < arr.length; i++)
  107. //        {
  108. //            Entry<String, Integer> ent = (Entry<String, Integer>) arr[i];
  109. //            System.out.format("%s -> %d\n", ent.getKey(), ent.getValue());
  110. //        }
  111.     }
  112.  
  113.     public static void main(String[] args)
  114.     {
  115.         if (args.length == 0)
  116.         {
  117.             System.err.format("Usage:\n%s <textFileName>", MaxDuplicateWordCount.class.getName());
  118.             System.exit(1);
  119.         }
  120.         MaxDuplicateWordCount maxDup = new MaxDuplicateWordCount(args[0]);
  121.         maxDup.readFile();
  122.     }
  123. }
  124.