Friday 30 November 2012

Word Frequency Count :: Java

Word Frequency Count
This program prints the words in order of their frequencies. Higher frequency word will appear on top and words with same frequency will be sorted alphabetically.

import java.util.HashMap;
import java.util.Arrays;

public class WordFrequencyCounter{
   
    private class Word implements Comparable<Word>{
        String word;
        int count;
        public Word(String word, int count){
            this.word=word;
            this.count=count;
        }
        public int compareTo(Word otherWord){
            if(this.count == otherWord.count){
                return this.word.compareTo(otherWord.word);
            }
            return (otherWord.count - this.count);
        }
    }
   
    private Word[] getFrequentWords(String words[]){
        HashMap<String, Word> map = new HashMap<String, Word>();
        for(String s:words){
            Word w = map.get(s);
            if(w == null){
                w = new Word(s, 1);
            }else{
                w.count++;
            }
            map.put(s, w);
        }
        Word[] list = map.values().toArray(new Word[]{});
        Arrays.sort(list);
        return list;
    }
   
    public static void main(String... args){
        String[] words = {"hello", "hi", "how", "are", "you", "what's up", "hi", "hello"};
        Word[] frequency = new WordFrequencyCounter().getFrequentWords(words);
        for(Word w:frequency){
            System.out.println(w.word+" "+w.count);
        }
    }
} 


profile for Mohammad Faisal at Stack Overflow, Q&A for professional and enthusiast programmers

Tuesday 12 June 2012

Java Keywords Categorized

I'd recently looking at the java keywords and thought of categorizing them to make it easier to memorize.

I'd worked on them and categorized on my best but as everything is never perfect so I need your suggestions and support to make them more effective.

Here I'd categorized them as:

  1. Data Types:
    1. byte
    2. short
    3. int
    4. long
    5. float
    6. double
    7. char
    8. boolean
    9. strictfp
  2. Control Statements:
    1. if
    2. else
    3. for
    4. while
    5. do
    6. switch
    7. case
    8. default
    9. break
    10. continue
  3. Access Specifier / Modifier:
    1. public
    2. protected
    3. private
    4. static
  4. Class / Object / Method:
    1. class
    2. interface
    3. enum
    4. abstract
    5. super
    6. this
    7. new
    8. extends
    9. implements
    10. instanceof
    11. void
    12. return
    13. native
    14. final
  5. Exception Handling:
    1. try
    2. catch
    3. finally
    4. throw
    5. throws
  6. Package:
    1. package
    2. import
  7. Threading / IO:
    1. synchronized
    2. volatile
    3. transient
  8. Debugging:
    1. assert
  9. Reserved but not used:
    1. goto
    2. const
  10. Reserved for literals:
    1. true
    2. false
    3. null