Write a program that gets an array of words and does the following:
Here's a sample run assuming the array of words as {i , came , i , saw , i , conquered}
came : 1
conquered : 1
i : 3
saw : 1
[came, conquered, i, saw]
[1, 1, 3, 1]
Note: Print in the same order as shown above.
- Prints each word and it's frequency
- Prints only the words
- Prints only the frequency of all words
Here's a sample run assuming the array of words as {i , came , i , saw , i , conquered}
came : 1
conquered : 1
i : 3
saw : 1
[came, conquered, i, saw]
[1, 1, 3, 1]
Note: Print in the same order as shown above.
SOLUTION:
import java.util.Scanner; import java.util.StringTokenizer; import java.util.Map; import java.util.HashMap; import java.util.Set; import java.util.TreeSet; public class HashMapExample { public static void main(String[] args){ //Scanner object Scanner input = new Scanner(System.in); //Reading the line System.out.print("Enter the line of words: "); String line = input.nextLine(); //Creating String tokenizer for line StringTokenizer tokenizer = new StringTokenizer(line); //Creating and Adding words to the map int count=0; String word; Map< String,Integer > map = new HashMap< String,Integer >(); while( tokenizer.hasMoreTokens() ) { word = tokenizer.nextToken(); if(map.containsKey(word)){ count = map.get(word); map.put(word, count+1); } else{ map.put(word, 1); } }//End map creator //Creating set for the map Set< String > list = map.keySet(); TreeSet< String > sortedList = new TreeSet< String >(list); //Printing duplicate words with frequency for ( String word2 : sortedList ) { System.out.printf("%s : %s\n",word2,map.get(word2)); } //Printing only the words System.out.println(sortedList); //Printing only frequency System.out.print("[ "); for ( String word2 : sortedList ) { System.out.print(map.get(word2)+ " "); } System.out.println("]"); }//End main method }//End class
No comments:
Post a Comment