gpt4 book ai didi

java - 我可以在 .removeif() 中使用 .size() 作为 ArrayList 的条件吗?

转载 作者:行者123 更新时间:2023-12-02 09:21:53 25 4
gpt4 key购买 nike

在我正在编写的程序中,如果 double 值小于某个值,我想从 ArrayList 中删除它们。但是,如果只剩下一个元素,即使它满足删除条件,我也不想删除它,因为我需要 Arraylist 不为空。

我在 ArrayLists 的 javadoc 中看到有一个 removeIf(filter) 方法,所以我暂时这样写:

employeeLine.removeIf(customerTime -> (customerTime < nextCustomerArrival && employeeLine.size() > 1));

例如,如果 nextCustomerArrival = 11.0employeeLine = [2.0, 5.0, 8.5],那么在使用我编写的内容后,我希望看到 雇员线= [8.5] 。然而,这一行是我正在编写的一个更大的类的一部分,我不确定如何轻松检查这是否有效。任何帮助都会很棒。

Edit1:修复了 moilejter 指出的拼写错误;谢谢伙计。

Edit2:我尝试编译它并收到以下错误:

MultiLaneSimulation.java:66: error: local variables referenced from a lambda expression must be final or effectively final
lines.get(j).removeIf(customer -> (customer < sequentialArrivalTime && lines.get(j).size() > 1));
^
1 error

所以,没有骰子。此外,我尝试在测试代码的 main 方法中对此进行测试,它将删除所有元素,而不是仅删除一个元素。然后我尝试了 for-each 循环,但这导致我在线程“main”java.util.ConcurrentModificationException 中遇到异常,因此不再有骰子。

此时我将尝试编写一个可以完成我想要的操作的辅助方法。如果我设法弄清楚,我会将其发布为其他人的答案/如果您好奇的话。

Edit3:对于上下文,我本质上使用这些 ArrayList 作为排序队列(第一个 = 最小 --> 最后 = 最大),所以如果发生这种情况,我只会对保留最后一个元素感兴趣。

附注先发制人的道歉:我是第一次向 SO 发帖,并称自己为 Java 新手。如果我说或尝试一些没有意义的事情,我发誓我并不是想让你感到困惑或惹恼你,我只是还在学习。

最佳答案

这将是您的条件的伪代码,

1) 将List中的lastElement保存到临时变量中。

2) 删除所有元素

3)如果,所有元素都被删除,我们需要添加步骤1中保存的临时值。

public static void removeLessThan(Double minimumAllowedValue, ArrayList<Double> list) {
Double lastElement = list.get(list.size() - 1); //Assuming List is not empty and contains atleast 1 element.
list.removeIf(element -> element < minimumAllowedValue);
if(list.isEmpty()) {
list.add(lastElement);
}
}

关于java - 我可以在 .removeif() 中使用 .size() 作为 ArrayList 的条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58636455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com