Interview Question
Country: India
use LinkedHashMap<String, int[]> to store data in java.
public static void getProdCount(String[][] input){
LinkedHashMap<String, int[]> map = new LinkedHashMap<String, int[]>();
for(int i=0;i<input.length;i++){
int[] list= map.get(input[i][0]);
if(list==null){
list = new int[12];
}
String date = input[i][1]; //2/1/1980
int index = Integer.parseInt(date.split("/")[0])-1;
list[index] = list[index]+1;
map.put(input[i][0],list);
}
for(Map.Entry<String, int[]> entry:map.entrySet()){
int[] list = entry.getValue();
for(int i=0;i<list.length;i++){
if(list[i]>0)
System.out.println(entry.getKey()+" "+getMonth(i) +" "+list[i]);
}
}
}
public static String getMonth(int i){
String[] month = {"Jan","Feb","March","April","May","June","July","Aug","Sep","Oct","Nov","Dec"};
return month[i];
}
pass input as :
String[][] input = {
{"A","1/1/1980"},
{"B","1/1/1980"},
{"C","1/1/1980"},
{"A","1/1/1980"},
{"B","1/1/1980"},
{"C","2/1/1980"},
{"A","7/1/1980"},
{"B","1/1/1980"},
{"C","5/1/1980"},
{"A","3/1/1980"},
{"B","1/1/1980"},
{"C","2/1/1980"}};
class Program
{
static void Main(string[] args)
{
List<Sales> x = new List<Sales>();
x.Add(new Sales{productName="A",date=DateTime.Parse("1/1/1980")});
x.Add(new Sales{productName="B",date=DateTime.Parse("2/1/1980")});
x.Add(new Sales{productName="A",date=DateTime.Parse("1/2/1980")});
x.Add(new Sales{productName="C",date=DateTime.Parse("1/1/1980")});
var t = from z in x group z by new {m=z.date.ToString("MMMM"),z.productName} into temp select new {ProductName =temp.Key.productName ,Month =temp.Key.m,Copies =temp.Count()} ;
foreach (var x1 in t)
{
Console.WriteLine(x1.ProductName+ " "+x1.Month+ " "+x1.Copies);
}
}
public class Sales
{
public string productName;
public DateTime date;
}
}
- SK January 17, 2014