Java 使用where条件从列表中获取最后一个索引

Java 使用where条件从列表中获取最后一个索引,java,android,Java,Android,如何使用where条件从数组列表中获取最后一个索引。我是java的初学者。我有更敏捷的经验,我在那里用过: list.lastIndex(where: {$0.id == 1}) 例如,更快的方法是从循环的末尾开始循环 int索引=-1; 对于(int i=list.size()-1;i>=0;i--){ if(list.get(i)==1){ 指数=i; 打破 } } 在科特林,你可以像在斯威夫特一样 val index=list.indexOfLast{it==1} java中的另一种

如何使用where条件从数组列表中获取最后一个索引。我是java的初学者。我有更敏捷的经验,我在那里用过:

list.lastIndex(where: {$0.id == 1})

例如,更快的方法是从循环的末尾开始循环

int索引=-1;
对于(int i=list.size()-1;i>=0;i--){
if(list.get(i)==1){
指数=i;
打破
}
}
在科特林,你可以像在斯威夫特一样

val index=list.indexOfLast{it==1}
java中的另一种方法是使用流并将每个值映射到带有筛选器的索引,并在筛选器之后获得最大索引,但它要求所有项都是唯一的,以便indexOf不会复制键

Integer[]intArray=list.parallelStream()
.filter(整数->整数==1)
.collect(Collectors.toMap(列表::indexOf,(c)->c))
.values().toArray(新整数[]{});
int length=intArray.length;
整数lastIndex=intArray[length-1];
我测试了3种解决方案的速度,结果是

解决方案1:11000纳秒

解决方案2:2388000纳秒

解决方案3:165954100纳秒


所以我认为最好的方法是创建一个helper函数,它接受列表,这个函数使用第一个解决方案验证条件并返回索引。最好的方法是使用lastIndexOf方法

如果不知道您当前希望在Java中实现什么,那么您在其他语言中所做的工作就没有多大帮助。你能举一个例子,说明你对什么输入期望得到什么结果吗?它想得到列表中包含给定id的最后一个索引。需要帮助吗?从后面到前面循环arraylist,一旦条件为真,就立即中断。在kotlin中,你有。在Java中,您可能需要向后迭代(您可以将其提取到方法中)。