我打算重做在这里找到的代码:https://stackoverflow.com/a/8995988但这被证明是不成功的。我从这里得到一个主意:https://www.logicbig.com/how-to/java/lambda-list-contains-a-substring.html
而且我的想法行得通,但我怀疑这是错误的代码,我想知道为什么我没有进行StackOverflow返工的情况无法按预期进行。
我将在1个块中同时显示代码的两位。只需切换注释和不注释哪个“ if”行,即可在工作版本和不工作版本之间切换。
import java.util.Arrays;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> result0 = Arrays.asList("/Videos/Templates/file.mp4", "/Videos/Templates/file2.mp4", "/Videos/Templates/file3.mp4");
List<String> result2 = Arrays.asList("/Videos/Templates/file.mp4.sha256");
for (int i = 0; i < result0.size(); i++) {
List<String> finalResult = result0;
int finalI = i;
// if (result2.parallelStream().anyMatch(x -> x.contains(finalResult.get(finalI)))) {
if (result2.parallelStream().anyMatch(x -> finalResult.get(finalI).contains(x))){
System.out.println("sha matches files: " + result0.get(i));
}
}
}
}
如果证明这个问题更好地用作对https://stackoverflow.com/a/8995988的注释,可以更好地解释代码,那么我很乐意对此进行修改。
因为contains
不是交换运算符。例如,“闪电”包含“灯光”,但“灯光”不包含“闪电”。在您的情况下,"/Videos/Templates/file.mp4.sha256"
包含"/Videos/Templates/file.mp4"
,但"/Videos/Templates/file.mp4"
不包含"/Videos/Templates/file.mp4.sha256"
。