提问者:小点点

检查清单是否包含Java其他清单的任何项目


我们有两个列表,一个是问题类型,另一个是标签类型。

问题课有三个主题

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
        }
    }
}

这并不是我想要做的,我想我必须做一些流,但我不知道如何写代码。


共2个答案

匿名用户

尝试:

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
    }
});