有没有办法影响稍后在Java中使用的语句?
我不知道标题有多清楚。我正在用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
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]))) {
...
}