【发布时间】:2020-07-27 08:42:32
【问题描述】:
如何在不向新的 ArrayList 中添加价值而只更新原始列表的情况下优化这一点?
String filterval = filter.toLowerCase();
ArrayList<String> filtredArr = new ArrayList<String>();
listArray.forEach(
valueText -> {
String val = valueText.toLowerCase();
if (val.startsWith(filterval) || val.contains(filterval))
filtredArr.add(valueText);
else {
Arrays.stream(valueText.split(" ")).forEach(
singleWord -> {
String word = singleWord.toLowerCase();
if(word.startsWith(filterval) || word.contains(filterval))
filtredArr.add(valueText);
}
);
}
});
【问题讨论】:
-
看看this。一般来说,在迭代时修改流的源不是一个好主意,因此创建一个新列表会更好。
-
优化什么?可读性?
-
hmm 而不是使用 foreach 使用其他一些终端操作,如 filter() 或?
-
如果
val.contains(filterval)为假,val 中是否有一个词为真? -
@xyz16179 他们指的是如果字符串不包含
filterval,则没有子字符串(因此字符串中没有单词)将包含filterval。
标签: java arraylist foreach java-stream