| import java.util.AbstractMap; |
| import java.util.Arrays; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.Optional; |
| import java.util.function.Function; |
| |
| |
| import static java.util.stream.Collectors.counting; |
| import static java.util.stream.Collectors.groupingBy; |
| |
| class Main { |
| public static void main(String...args){ |
| int[] array = new int[]{1,2,3,4,5,5,6}; |
| System.out.println(getMode(array)); |
| } |
| |
| private static Map.Entry<Integer, Long> getMode(int... src){ |
| return Arrays.stream(src) |
| .mapToObj(Integer::valueOf) |
| .collect(groupingBy(i -> i, counting())) |
| .entrySet() |
| .stream() |
| .max((e1, e2) -> e1.getValue().compareTo(e2.getValue())) |
| .flatMap(e -> Optional.of |
| (new AbstractMap.SimpleImmutableEntry<>(Integer.valueOf(e.getKey().intValue()), Long.valueOf(e.getValue().longValue())))) |
| .get(); |
| } |
| } |
| |
| class Main1 { |
| |
| private static Kl<Integer> getMode(Optional<Map.Entry<Integer, Long>> max){ |
| return max |
| .flatMap(e -> { |
| return Optional.of(Kl.factory(e.getKey())); |
| }).get(); |
| } |
| |
| static class Kl<A> { |
| static <A1> Kl<A1> factory(A1 a) { |
| return null; |
| } |
| } |
| } |
| |
| class SameCalls<ST> { |
| <B> List<B> bar(B a) {return null;} |
| <R> Optional<R> foo(Function<? super ST, Optional<R>> computable) {return null;} |
| |
| List<String> ff(SameCalls<List<String>> sc){ |
| return sc.foo((x) -> { |
| return Optional.of(bar(x.get(0))); |
| }).get(); |
| } |
| } |