# wordcount challenge on
Hi,

I am working on below challenge.
http://codingbat.com/prob/p117630

The classic word-count algorithm: given an array of strings, return a Map<String, Integer> with a key for each different string, with the value the number of times that string appears in the array.

wordCount(["a", "b", "a", "c", "b"]) → {"b": 2, "c": 1, "a": 2}
wordCount(["c", "b", "a"]) → {"b": 1, "c": 1, "a": 1}
wordCount(["c", "c", "c", "c"]) → {"c": 4}

do i need to worry about sorting like alphabetica in output?
Comment
Watch Question

Do more with EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Sr. Consultant
Commented:
Similar question as mentioned https://www.experts-exchange.com/questions/28973619/wordmultiple-challenge.html?cid=1752.

Answer is the same. :) Example results are not ordered, so need not to worry about.
Sr. Software engineer
Commented:
>> do i need to worry about sorting like alphabetica in output?
The challenge doesn't mention that, so: No.
Moreover, the're talking about returning a Map.
A Map hasn't any sorting of its keys.

Commented:
``````public Map<String, Integer> wordCount(String[] strings) {
Map<String, Integer> map=new HashMap();
for(int i=0;i<strings.length;i++){
String test=strings[i];
if(map.containsKey(test)){
int count=map.get(test);
map.put(test,count+1);
}

else{
map.put(test,1);
}
}
return map;
}
``````

above passes all tests. any improvements or alternate approaches.

Commented:
``````public Map < String, Integer > wordCount(String[] strings) {
Map < String, Integer > map = new SortedMap();
for (int i = 0; i < strings.length; i++) {
String test = strings[i];
if (map.containsKey(test)) {
int count = map.get(test);
map.put(test, count + 1);
} else {
map.put(test, 1);
}
}
return map;
}
``````

why above gives below compilation error?
Compile problems:

Error:      Map<String, Integer> map=new SortedMap();
^^^^^^^^^
Cannot instantiate the type SortedMap

see Example Code to help with compile problems
does not codingbat supports SortedMap?

Commented:
Working with SortedMap in this question is off-topic as the challenge questions requires you to use a Map.
You should look up the SortedMap API if you want to ask another question.

Commented:
SortedMap is implementation of Map interface similar to HashMap right? I thought codingbat supports that as well but looks no. Only HashMap? I will test in ecipse and see how it works

Commented:
looks like no SortedMap class is there. It seems to be interface. TreeMap is only implenetation class.
https://www.tutorialspoint.com/java/java_sortedmap_interface.htm

Commented:
``````package test;

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class WordCount {

public static void main(String[] args) {
// TODO Auto-generated method stub
// wordCount(["a", "b", "a", "c", "b"]) → {"b": 2, "c": 1, "a": 2}
// Map<String, String> map = new HashMap();
// map.put("b", null);
// map.put("a", "Hi");
String[] arr = { "a", "b", "a", "c", "b" };
System.out.println("--->" + mapAB(arr));

}

/*
* private static String mapAB(String[] arr) { // TODO Auto-generated method
* stub return null; }
*/

public Map<String, Integer> wordCount(String[] strings) {
Map<String, Integer> map = new TreeMap();
for (int i = 0; i < strings.length; i++) {
String test = strings[i];
if (map.containsKey(test)) {
int count = map.get(test);
map.put(test, count + 1);
}

else {
map.put(test, 1);
}
}
return map;
}

}
``````

above gives below error at line at line 9

The method mapAB(String[]) is undefined for the type WordCount

Not sure why and how to fix it?

Commented:
``````package test;

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class WordCount {

public static void main(String[] args) {
// TODO Auto-generated method stub
// wordCount(["a", "b", "a", "c", "b"]) → {"b": 2, "c": 1, "a": 2}
// Map<String, String> map = new HashMap();
// map.put("b", null);
// map.put("a", "Hi");
String[] arr = { "a", "b", "a", "c", "b" };
System.out.println("--->" + wordCount(arr));

}

/*
* private static String mapAB(String[] arr) { // TODO Auto-generated method
* stub return null; }
*/

public static Map<String, Integer> wordCount(String[] strings) {
Map<String, Integer> map = new TreeMap();
for (int i = 0; i < strings.length; i++) {
String test = strings[i];
if (map.containsKey(test)) {
int count = map.get(test);
map.put(test, count + 1);
}

else {
map.put(test, 1);
}
}
return map;
}

}
``````

i fixed it. now i see sorted key output

--->{a=2, b=2, c=1}

Commented:
``````package test;

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class WordCount {

public static void main(String[] args) {
// TODO Auto-generated method stub
// wordCount(["a", "b", "a", "c", "b"]) → {"b": 2, "c": 1, "a": 2}
// Map<String, String> map = new HashMap();
// map.put("b", null);
// map.put("a", "Hi");
String[] arr = { "a","e","b", "a", "c", "b" };
System.out.println("--->" + wordCount(arr));

}

/*
* private static String mapAB(String[] arr) { // TODO Auto-generated method
* stub return null; }
*/

public static Map<String, Integer> wordCount(String[] strings) {
Map<String, Integer> map = new HashMap();
for (int i = 0; i < strings.length; i++) {
String test = strings[i];
if (map.containsKey(test)) {
int count = map.get(test);
map.put(test, count + 1);
}

else {
map.put(test, 1);
}
}
return map;
}

}
``````

even after changing TreeMap to HashMap back again why and how it is sorting?

--->{a=2, b=2, c=1, e=1}

Commented:
``````public Map<String, Integer> wordCount(String[] strings) {
Map<String, Integer> map=new TreeMap();
for(int i=0;i<strings.length;i++){
String test=strings[i];
if(map.containsKey(test)){
int count=map.get(test);
map.put(test,count+1);
}

else{
map.put(test,1);
}
}
return map;
}
``````

codingbat supported TreeMap as well

Do more with 