gudii9
asked on
wordcount challenge
Hi,
I am working on below challenge.
http://codingbat.com/prob/p117630
do i need to worry about sorting like alphabetica in output?
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?
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
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:does not codingbat supports SortedMap?
Error: Map<String, Integer> map=new SortedMap();
^^^^^^^^^
Cannot instantiate the type SortedMap
see Example Code to help with compile problems
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.
You should look up the SortedMap API if you want to ask another question.
ASKER
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
ASKER
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
https://www.tutorialspoint.com/java/java_sortedmap_interface.htm
ASKER
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?
ASKER
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}
ASKER
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}
ASKER
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
ASKER
Open in new window
above passes all tests. any improvements or alternate approaches.