java - 带条件获取数组列表的最后一个索引

标签 java arraylist equals contains lastindexof

我的列表如下所示,因为这包括 AbcConSch 的许多重复字段值

List<AbcConSch> asBeanList= tbCondition.getAbcConScheds();
AbcConSch abcSchedule = asBeanList.get(i);

这个列表有一个包含数据元素的包,所以我需要获取带有字段 value="ConditionCode"条件的 lastindexof() asBeanList。

我尝试使用以下代码来获取值

i == asBeanList.lastIndexOf(abcSchedule.getSrConditionCode().contains(SC_CONDITION_CODE_ABC))

感谢您提前提供的帮助和支持。 阿伦

最佳答案

您可以实现自己的 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));

关于java - 带条件获取数组列表的最后一个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59871663/

相关文章:

java - Spring中路径的限制

java - 如何比较Java中的字符串?

java - JETTY服务器错误:404 on Ubuntu,地理服务器

Java对子类的静态反射

java - 将对象添加到另一个数组列表内的数组列表

java - 元素在 Arraylist 的迭代过程中丢失

android parcelable字符串数组

java - 字符串匹配的效率,Equals 与 Matches 方法

java - 如何避免 Object.equals 方法出现多个 if else block ?

java - Java 等于多个值