package ch.claude_martin; import java.util.Arrays; import java.util.Optional; import java.util.stream.Stream; public class SomeClass { static class Tuple implements Comparable { final int max; final int[] vector; public Tuple(int[] vector) { assert vector.length > 0; this.max = Arrays.stream(vector).max().getAsInt(); this.vector = vector; } @Override public int compareTo(Tuple o) { return Integer.compare(o.max, this.max); } public int getMax() { return max; } public int[] getVector() { return vector; } } public static void main(String[] args) { final int[] v1 = { 3, 5 }; final int[] v2 = { 3, 6 }; final int[] v3 = {}; final int[] v4 = { -1, Integer.MIN_VALUE }; final Optional tuple = Stream.of(v1, v2, v3, v4).filter(v -> v.length > 0).map(v -> new Tuple(v)).sorted() .findFirst(); if (tuple.isPresent()) System.out.println(tuple.get().getMax() + " -> " + Arrays.toString(tuple.get().getVector())); else System.out.println("No data"); } }