Вы можете реализовать свой собственный метод lastIndexOf()
и позволить ему принять соответствующее выражение:
public static <E> int lastIndexOf(List<E> list, Predicate<E> predicate) {
for (ListIterator<E> iter = list.listIterator(list.size()); iter.hasPrevious(); )
if (predicate.test(iter.previous()))
return iter.nextIndex();
return -1;
}
Тест
List<String> list = Arrays.asList("AA", "BB", "ABC", "CC");
System.out.println(lastIndexOf(list, s -> s.contains("AA")));
System.out.println(lastIndexOf(list, s -> s.contains("A")));
System.out.println(lastIndexOf(list, s -> s.contains("BB")));
System.out.println(lastIndexOf(list, s -> s.contains("B")));
System.out.println(lastIndexOf(list, s -> s.contains("CC")));
System.out.println(lastIndexOf(list, s -> s.contains("C")));
System.out.println(lastIndexOf(list, s -> s.contains("DD")));
Выходные данные
0
2
1
2
3
3
-1
Для своего кода вы будете использовать его так:
List<AbcConSch> asBeanList = tbCondition.getAbcConScheds();
int i = lastIndexOf(asBeanList, a -> a.getSrConditionCode().contains(SC_CONDITION_CODE_ABC));