Я недавно дал интервью с крупнейшим MNC и столкнулся с вопросом кодирования.Это был вопрос, основанный на инвентаризации.Получил файл, который имеет следующие данные:
Дата, название фрукта, количество проданных фруктов, общее количество фруктов.
**2018-06-01,apple,15,25 ;
2018-06-02,apple,13,25 ;
2018-06-03,apple,20,25 ;
2018-06-01,mango,12,25 ;
2018-06-02,mango,19,25 ;
2018-06-03,mango,20,25 ;
2018-06-01,orange,15,25 ;
2018-06-02,mango,16,25 ;
2018-06-02,orange,14,25 ;
2018-06-03,orange,24,25 ;
2018-06-02,apple,18,25**
Мне нужно перебрать файл иВ конце распечатать результаты, сколько фруктов продано на 2018-06-02.Ниже приведен код, который я написал
enter code here
public class Inventory {
public static void main(String[] args) throws IOException {
FileInputStream geek = new FileInputStream("/Users/preet/Desktop/test2.txt");
InputStreamReader reader = new InputStreamReader(geek, StandardCharsets.UTF_8);
BufferedReader in = new BufferedReader(reader);
List<String> lines = new ArrayList<String>();
Map<String, Map<String, List<Integer>>> map = new HashMap<String, Map<String, List<Integer>>>();
Map<String, List<Integer>> map2 = new HashMap<String, List<Integer>>();
List<Integer> apple = new ArrayList<Integer>();
List<Integer> mango = new ArrayList<Integer>();
List<Integer> orange = new ArrayList<Integer>();
String result = "";
String line = null;
String[] input = new String[10];
int i = 0;
while ((line = in.readLine()) != null) {
input[i] = line;
System.out.println("value at " + i + ":" + input[i]);
i++;
}
for (String a : input) {
String b[] = a.split(",");
if (b[1].equalsIgnoreCase("apple")) {
apple.add(Integer.parseInt(b[2]));
map2.put(b[1], apple);
map.put(b[0], map2);
} else if (b[1].equalsIgnoreCase("orange")) {
orange.add(Integer.parseInt(b[2]));
map2.put(b[1], orange);
map.put(b[0], map2);
} else if (b[1].equalsIgnoreCase("mango")) {
mango.add(Integer.parseInt(b[2]));
map2.put(b[1], mango);
map.put(b[0], map2);
}
if (map.containsKey(b[0])) {
Object value1 = map.get(b[0]);
map.put(b[0], map2);
} else
map.put(b[0], map2);
}
System.out.println("Fetching Keys and corresponding [Multiple] Values n");
List<String> results = new ArrayList<String>();
for (Map.Entry<String, Map<String, List<Integer>>> entry : map.entrySet()) {
String orange1 = null;
String apple1 = null;
String mango1 = null;
int a1 = 0;
int a2 = 0;
int a3 = 0;
Map<String, List<Integer>> values = entry.getValue();
for (Map.Entry<String, List<Integer>> entry1 : map2.entrySet()) {
String key = entry1.getKey();
if (key.equalsIgnoreCase("apple")) {
List l1 = entry1.getValue();
for (int j = 0; j < l1.size(); j++) {
a1 = (int) l1.get(j);
}
apple1 = entry.getKey() + " " + a1 + " apples";
results.add(apple1);
} else if (key.equalsIgnoreCase("mango")) {
List l1 = entry1.getValue();
for (int j = 0; j < l1.size(); j++) {
a2 = (int) l1.get(j);
}
mango1 = entry.getKey() + " " + a2 + " mangoes";
results.add(mango1);
} else if (key.equalsIgnoreCase("orange")) {
List l1 = entry1.getValue();
for (int j = 0; j < l1.size(); j++) {
a3 = (int) l1.get(j);
}
orange1 = entry.getKey() + " " + a3 + " oranges";
results.add(orange1);
}
}
System.out.println("Values = " + (values));
}
System.out.println("****" + results);
}
}