Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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中使用的语句?_Java_If Statement_Arraylist - Fatal编程技术网

有没有办法影响稍后在Java中使用的语句?

有没有办法影响稍后在Java中使用的语句?,java,if-statement,arraylist,Java,If Statement,Arraylist,我不知道标题有多清楚。我正在用Java创建一个ArrayList(专门针对Strings),我想将removeAll()和retainal()合并到一个方法中。这就是我所拥有的: @Override public boolean removeAll(Collection<?> c) { return removeSome(c, true); } @Override public boolean retainAll(Collection

我不知道标题有多清楚。我正在用Java创建一个
ArrayList
(专门针对
String
s),我想将
removeAll()
retainal()
合并到一个方法中。这就是我所拥有的:

@Override
    public boolean removeAll(Collection<?> c) {
        return removeSome(c, true);
    }

    @Override
    public boolean retainAll(Collection<?> c) {
        return removeSome(c, false);
    }
我考虑过

if ((remove && !c.contains(backingStore[i])) || (!remove && c.contains(backingStore[i]))) {
    ...
}

但是我想知道是否有更好的方法。

好吧,如果(c.contains(backingStore[I])!=remove),您可以使用
if(c.contains(backingStore[I])!=remove){
但那太可怕了;)最好重构成一个单独的方法。但更有趣的是,
删除一些
真的有效吗?为什么你把
备份存储作为一个数组-如果它是一个列表就更好了。因为我正在从头开始构建一个
数组列表,
备份存储
是一个de>array
,因为从来没有实现过
List
。很公平:)顺便说一句,如果backingStore发生了变化,我想你需要
changed=true
,也就是说,如果哪怕只有一个条目被丢弃。目前,如果哪怕只有一个元素被保留,它看起来也被设置了。我没有注意到这一点。这是最重要的一点两个独立块的r-如果语句在
retain
中触发,则翻转标志,如果语句在
remove
中没有触发,则实际上,我想我可以将其取出,并在最后放入
boolean changed=insertionPoint!=newInsertionPoint;
if (!c.contains(backingStore[i])) {
    backingStore[newInsertionPoint++] = backingStore[i];
                    
    //this check is here because maybe backingStore and c don't intersect
    if (!changed)
        changed = true;
}
if ((remove && !c.contains(backingStore[i])) || (!remove && c.contains(backingStore[i]))) {
    ...
}