我想在java 8中为内部编写:
for (String file : files) {
for (String line : lines) {
if (file.contains(line)) {
//do something
}
}
}
我不想为每个人写内容,如:
files.stream().forEach(file -> {
lines.stream().forEach(line-> {
//do something
})
})
有什么像
(file, line) -> { //do something}
在对内,我将得到所有可能的排列
答案 0 :(得分:7)
你可能会这样,但它与你现有的没有太大的不同
files.stream()
.flatMap(file -> lines.stream().map(line -> new Pair(file, line)))
.map(pair -> do something with pair)
答案 1 :(得分:1)
或者您可以简单地定义一个类,该类将包含一个列表,以便在采用String
的方法中进行研究。我在这里使用Dictionary
类来查找另一个列表中定义的每个“单词”。
public class Dictionary{
private List<String> list;
public Dictionary(List<String> list){
this.list = list;
}
public void printMatch(String word){
list.stream().filter(word::contains).forEach(System.out::println);
}
}
然后,对于每个file
,只需调用方法。
public static void main(String[] args) {
Dictionary d = new Dictionary(Arrays.asList("abc", "def", "fgh"));
Stream.of("def", "ijk").forEach(d::printMatch);
}
该示例不是为了匹配实际需求,而是为了显示一个简单的解决方案,不直接使用内部循环(只需将它们隐藏在方法中;)。)。