Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以将.removeif()中的.size()用作ArrayList的条件?_Java_Arraylist - Fatal编程技术网

Java 是否可以将.removeif()中的.size()用作ArrayList的条件?

Java 是否可以将.removeif()中的.size()用作ArrayList的条件?,java,arraylist,Java,Arraylist,在我正在编写的程序中,如果双精度小于某个值,我希望从ArrayList中删除双精度。但是,如果只剩下一个元素,即使它满足要删除的条件,我也不想删除它,因为我需要Arraylist不为空 我在javadoc for ArrayList中看到有一个RemoveFilter方法,所以我暂时写了以下内容: employeeLine.removiefccustomertime->customerTime1; 例如,如果nextCustomerArrival=11.0,employeeLine=[2.0,5

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

我在javadoc for ArrayList中看到有一个RemoveFilter方法,所以我暂时写了以下内容:

employeeLine.removiefccustomertime->customerTime1; 例如,如果nextCustomerArrival=11.0,employeeLine=[2.0,5.0,8.5],那么在使用我写的内容之后,我希望看到employeeLine=[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
所以,不要掷骰子。此外,我尝试在测试代码的主方法中测试它,它将删除所有元素,而不是除一个之外的所有元素。然后我尝试了一个for-each循环,但这导致我在主线程java.util.ConcurrentModificationException中得到了一个异常,所以没有骰子了

在这一点上,我将尝试编写一个助手方法,它可以满足我的需要。如果我能找到答案,我会把它贴出来作为其他人的答案/如果你好奇的话

Edit3:对于上下文,我基本上使用这些ArrayList作为排序队列first=Minimest->last=Maximum,因此我只对在这种情况下保留最后一个元素感兴趣


p.S.先发制人的道歉:我是第一次向SO发帖,我会称自己为Java新手。如果我说了或尝试了一些没有意义的话,我发誓我不是想迷惑你或让你生气,我只是还在学习。

正如我承诺的那样,我能够编写一个帮助器方法来实现我所寻找的。我确信有一个更好的/更可靠的/更健壮的/等等的解决方案,但现在已经过了午夜,所以我会尽我所能。以下是我的创作:

    /**
    * Removes doubles from an ArrayList that are strictly less than the given parameter
    * NOTE: leaves the last element if this would reduce the ArrayList.size() to 0
    *
    * @param minimumAllowedValue  Of type Double; remaining values in the ArrayList will be greater than or equal to it
    * @param list  Of type ArrayList<Double>; the ArrayList we are changing
    */
    public static void removeLessThan(Double minimumAllowedValue, ArrayList<Double> list) {
        ArrayList<Double> toRemove = new ArrayList<Double>();
        for (Double element : list) {
            if (element < minimumAllowedValue) {
                toRemove.add(element);
            }
        }
        if (toRemove.size() == list.size()) {
            toRemove.remove(list.size() - 1);
        }
        list.removeAll(toRemove);
    }

这将是适用于您的条件的伪代码

1将列表中的最后一个元素保存到临时变量中

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);
        }
}

编译并检查。这应该行得通,真想不到为什么不行。。去看看吧。欢迎来到SO!当你提出一个问题时,试着增加一个最低限度的内容:输入样本、预期输出样本、你尝试了什么、研究和你在哪里卡住了。你试了什么?如果我没听错的话,你是想在里面写employeeLine.size,对吗?总的来说,我怀疑这是个坏主意,但我不知道这是否安全。如果你不得不选择你需要选择的一个,然后删除所有符合你标准的,然后添加所选的,如果你的列表为空,不是更好吗?我想它可能更容易阅读,它会让你描述如何选择一个要保留的值,如果需要的话……是的,这要简洁得多。非常感谢。