获取带有条件的arraylist的最后一个索引
Posted
技术标签:
【中文标题】获取带有条件的arraylist的最后一个索引【英文标题】:Getting last index of arraylist with condition 【发布时间】:2020-05-09 07:38:09 【问题描述】:我有如下所示的列表,因为这包括 AbcConSch 的许多重复字段值
List<AbcConSch> asBeanList= tbCondition.getAbcConScheds();
AbcConSch abcSchedule = asBeanList.get(i);
这个列表有包含数据元素的包,所以我需要获取 lastindexof() asBeanList 字段值=“ConditionCode”的条件。
我已经尝试使用下面的代码来获取价值
i == asBeanList.lastIndexOf(abcSchedule.getSrConditionCode().contains(SC_CONDITION_CODE_ABC))
感谢您提前提供的帮助和支持。 阿伦
【问题讨论】:
【参考方案1】:你可以实现自己的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));
【讨论】:
【参考方案2】:我认为你必须使用这种方式。
privat ArrayList<AbcConch>abc=new ArrayList();
List<AbcConSch> asBeanList= tbCondition.getAbcConScheds();
for (int i=0;i<=asBeanList.size();i++
if(asBeanList.get(i).getSrConditionCode().contains(SC_CONDITION_CODE_ABC))
abc.add(asBeanList.get(i);
最后你可以得到最后一个索引值
int i = abc.size()
【讨论】:
非常感谢..它解决了我的问题。 请认为它赞成并接受它,所以它也有助于其他人。【参考方案3】:以下是Java语言函数List.lastIndexOf()
的代码:
public int lastIndexOf(Object o)
if (o == null)
for (int i = size-1; i >= 0; i--)
if (elementData[i]==null)
return i;
else
for (int i = size-1; i >= 0; i--)
if (o.equals(elementData[i]))
return i;
return -1;
从这里,您可以简单地修改它以接受任意函数:
public int lastIndexOf(Object o)
// delete null checks (or leave in if your code requires them)
for (int i = size-1; i >= 0; i--)
if (yourCustomConditionHere) // add your custom condition
return i;
【讨论】:
以上是关于获取带有条件的arraylist的最后一个索引的主要内容,如果未能解决你的问题,请参考以下文章