我们有两个列表,一个是问题类型,另一个是标签类型。
问题课有三个主题
private String id;
private String header;
private String content;
private List<Tag> tags;
private Long timeStamp;
问题列表中有几个问题,标签列表中有所有标签。 我们要检查一个问题是否包含标签列表中的任何标签。 我想这样做所有的问题。
使用question.getTags
,我得到标签列表。
我试过了
List<Question> allQuestions = ... ; // List of type questions
List<Tags> alltags = ... ; // List of type tag
for(Question question: allQuestions) {
for(Tag tag: allTags){
if(question.getTags().contains(tag)) {
//do something
}
}
}
这并不是我想要做的,我想我必须做一些流,但我不知道如何写代码。
尝试:
for(Question question: allQuestions) {
for(Tag tag: allTags){
if(question.contains(tag)) {
//do something
}
}
}
您将对列表中的每个标记执行操作,而不是如果列表中有任何标记,则每个问题都执行一次操作。
正如您所建议的,使用流可以使这个解决方案更容易:
allQuestions.forEach(question -> {
if (question.getTags().stream().anyMatch(tag -> allTags.contains(tag)) {
// do something
}
});