У меня есть список списков на Java.Предполагается получить последний элемент каждого списка и поместить его в другой список с именем lastItems
, затем он получит максимальное значение lastItems
и его индекс.Вот код:
List<List<Integer>> myList = new ArrayList<>();
myList.add(new ArrayList<Integer>());
myList.add(new ArrayList<Integer>());
myList.add(new ArrayList<Integer>());
myList.get(0).add(1);
myList.get(0).add(2);
myList.get(0).add(3);
myList.get(1).add(4);
myList.get(1).add(5);
myList.get(1).add(6);
myList.get(2).add(7);
myList.get(2).add(8);
myList.get(2).add(9);
if (!myList.contains(Collections.EMPTY_LIST) && !myList.contains(null) && myList.stream().allMatch(l -> l.size() == L.get(0).size())) {
int[] lastItems = myList.stream().mapToInt(x -> x.get(x.size() - 1)).toArray();
int maxValue = Arrays.stream(lastItems).max().getAsInt();
int index = IntStream.range(0, lastItems.length).filter(i -> maxValue == lastItems[i]).findFirst().orElse(-1));
System.out.println(maxValue);
}
, но проблема в том, что IntStream.range(0, lastItems.length).filter(i -> maxValue == lastItems[i]).findFirst().orElse(-1))
находит в списке только индекс первого maxValue
, но я хочу найти все индексы, которые могут содержать maxValue
(например, в list = [9, 5, 9]
, index = 0 и index = 2 содержат maxValue
).Как я могу это сделать?