AlexMatveev

Untitled

Feb 11th, 2012
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.48 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.Map.Entry;
  3. import java.lang.StringBuilder;
  4. import java.io.*;
  5.  
  6. public class lab1 {
  7.  
  8.     private static HashMap<String, Integer> sortHashMap(
  9.             HashMap<String, Integer> hm) {
  10.         HashMap<String, Integer> map = new LinkedHashMap<String, Integer>();
  11.         List<String> yourMapKeys = new ArrayList<String>(hm.keySet());
  12.         List<Integer> yourMapValues = new ArrayList<Integer>(hm.values());
  13.         TreeSet<Integer> sortedSet = new TreeSet<Integer>(yourMapValues);
  14.         Integer[] sortedArray = sortedSet.toArray(new Integer[0]);
  15.         int size = sortedArray.length;
  16.         for (int i = size - 1; 0 <= i; i--) {
  17.             while (-1 != yourMapValues.indexOf(sortedArray[i])) {
  18.                 map.put(yourMapKeys.get(yourMapValues.indexOf(sortedArray[i])),
  19.                         sortedArray[i]);
  20.                 yourMapKeys.remove(yourMapValues.indexOf(sortedArray[i]));
  21.                 yourMapValues.remove(yourMapValues.indexOf(sortedArray[i]));
  22.             }
  23.         }
  24.         return map;
  25.     }
  26.  
  27.     private static void getInfo(String file) {
  28.         Reader reader = null;
  29.         HashMap<String, Integer> hm = new HashMap<String, Integer>();
  30.         try {
  31.             long count = 0;
  32.             reader = new InputStreamReader(new FileInputStream(file));
  33.             while (reader.ready()) {
  34.                 char ch;
  35.                 StringBuilder sb = new StringBuilder();
  36.                 while (Character.isLetterOrDigit(ch = (char) reader.read()))
  37.                     sb.append(ch);
  38.                 if (0 == sb.length())
  39.                     continue;
  40.                 count++;
  41.                 if (hm.containsKey(sb.toString())) {
  42.                     int value = (Integer) hm.get(sb.toString()) + 1;
  43.                     hm.put(sb.toString(), value);
  44.                 } else
  45.                     hm.put(sb.toString(), 1);
  46.             }
  47.             hm = sortHashMap(hm);
  48.             Set<Entry<String, Integer>> s = hm.entrySet();
  49.             Iterator<Entry<String, Integer>> i = s.iterator();
  50.             while (i.hasNext()) {
  51.                 Map.Entry<String, Integer> pairs = (Map.Entry<String, Integer>) i
  52.                         .next();
  53.                 double percent = ((Integer) pairs.getValue()).doubleValue();
  54.                 System.out.printf("%s;%d;%3.2f%%\n", pairs.getKey(),
  55.                         pairs.getValue(), percent / count * 100);
  56.             }
  57.         } catch (IOException e) {
  58.             System.err.println("Error while reading file: "
  59.                     + e.getLocalizedMessage());
  60.         } finally {
  61.             if (null != reader) {
  62.                 try {
  63.                     reader.close();
  64.                 } catch (final IOException e) {
  65.                     e.printStackTrace(System.err);
  66.                 }
  67.             }
  68.         }
  69.     }
  70.  
  71.     /**
  72.      * @param args
  73.      */
  74.     public static void main(String[] args) {
  75.         try {
  76.             String file = args[0];
  77.             getInfo(file);
  78.         } catch (ArrayIndexOutOfBoundsException e) {
  79.             System.err.println("Write name of input file");
  80.         }
  81.     }
  82.  
  83. }
Advertisement
Add Comment
Please, Sign In to add comment