我有一段代码,我试图操纵数组的内容
loopArrayValuesToRemove(mVal.getValues());
这里我试图删除值数组的内容
private Values[] loopArrayValuesToRemove(Values[] values) {
List<Values> files = new ArrayList<>(Arrays.asList(values.clone()));
Iterator<Values> iterator = files.iterator();
while(iterator.hasNext()) {
Values mVal = iterator.next();
if(!mVal.isCheckedLocally()){
iterator.remove();
}
// other operations
}
Values[] mvals = files.toArray(new Values[files.size()]);
return mvals;
}
Values[]
我也在创建新对象,
mVal.getValues()
内容未被修改。mVal.getValues()
)答案 0 :(得分:2)
你必须把它写成
mVal.setValues(loopArrayValuesToRemove(mVal.getValues()));
由于Java按值传递引用,因此您无法在方法内更改数组本身。内容可以更改,但如果尺寸发生变化,则无法完成。
答案 1 :(得分:1)
据我了解您的问题,您的目标是从列表中删除isCheckedLocally()
返回true的实例,
您可以使用自Java 8以来的Stream API。
mVal = mVal.stream()
.filter(i -> i.isCheckedLocally())
.collect(Collectors.toList());