/** * CS2030S PE1 Question 2 * AY21/22 Semester 2 * * @author A0000000X */ import java.util.Map; import java.util.List; import java.util.stream.Stream; import java.util.function.Predicate; class Query { public static Stream> getFilteredByKey(Map table, Predicate p) { return table.entrySet().stream().filter(e -> p.test(e.getKey())); } public static Stream getIdsFromName(Map> table, String name) { return getFilteredByKey(table, s -> s.equals(name)).flatMap(e -> e.getValue().stream()); } public static Stream getCostsFromIDs(Map table, Stream ids) { return ids.flatMap(id -> getFilteredByKey(table, e -> e == id).map(e -> e.getValue())); } public static Stream allCustomerCosts(Map> customerTable, Map salesTable) { return customerTable.entrySet() .stream() .flatMap(e -> e.getValue().stream().map(p -> e.getKey() + ": " + p)); } }