@Override public Object apply(List<Object> list) { LinkedHashMap<Object, Integer> ret = new LinkedHashMap<>(); if (list.size() >= 1) { Object o = list.get(0); if (o != null) { if (!(o instanceof Iterable)) { throw new IllegalArgumentException("Expected an Iterable, but " + o + " is of type " + o.getClass()); } for (Object obj : (Iterable) o) { ret.merge(obj, 1, (k, one) -> k + one); } } } return ret; } }
@Override @SuppressWarnings("unchecked") public Object apply(List<Object> list) { if (list.size() < 1) { return null; } LinkedHashMap<Object, Integer> ret = (LinkedHashMap<Object, Integer>)list.get(0); if (ret == null) { ret = new LinkedHashMap<>(); } for (int i = 1;i < list.size();++i) { Object o = list.get(i); if (o != null) { ret.merge(o, 1, (k, one) -> k + one); } } return ret; } }
@Override @SuppressWarnings("unchecked") public Object apply(List<Object> list) { if (list.size() < 1) { return null; } LinkedHashMap<Object, Integer> ret = new LinkedHashMap<>(); Iterable<Map<Object, Integer>> maps = (Iterable<Map<Object, Integer>>) list.get(0); for (Map<Object, Integer> s : maps) { if (s != null) { for (Map.Entry<Object, Integer> kv : s.entrySet()) { ret.merge(kv.getKey(), kv.getValue(), (k, cnt) -> k + cnt); } } } return ret; } }
@Override public synchronized Object merge(Object key, Object value, BiFunction<? super Object, ? super Object, ?> remappingFunction) { return propertyMap.merge(key, value, remappingFunction); } }
private void record(String property, PropertyAccessKind kind) { properties.merge(property, kind, PropertyAccessKind::unionWith); }
private static Collector<PizzaView, ?, List<Pizza>> toPizzaList() { BiConsumer<LinkedHashMap<Long, Pizza>, PizzaView> accumulator = (acc, pv) -> { Topping t = new Topping(pv.toppingId); t.setName(pv.toppingName); Pizza p = acc.computeIfAbsent(pv.id, pv::toPizza); p.getToppings().add(t); acc.put(pv.id, p); }; return Collector.of(LinkedHashMap::new, accumulator, (l, r) -> { r.forEach((key, value) -> l.merge(key, value, (p1, p2) -> { p1.getToppings().addAll(p2.getToppings()); return p1; })); return l; }, map -> new ArrayList<>(map.values())); }