You can implement your own lastIndexOf()
method, and let it take an expression to match:
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;
}
Test
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")));
Output
0
2
1
2
3
3
-1
For your code, you'd use it like this:
List<AbcConSch> asBeanList = tbCondition.getAbcConScheds();
int i = lastIndexOf(asBeanList, a -> a.getSrConditionCode().contains(SC_CONDITION_CODE_ABC));