Java 检查列表是否为<;字符串>;包含来自其他列表的文本<;字符串>;

Java 检查列表是否为<;字符串>;包含来自其他列表的文本<;字符串>;,java,Java,我有两个不同的清单。一个只包含服务标题,另一个包含文本中带有服务标题的长句。我感兴趣的是找到一种方法来确定一个列表中的标题是否存在于另一个列表的长句中。我不想看这两个列表是否完全匹配。仅当其中一个包含另一个的内容时 [举例] 要验证列表2中“这是一个包含应用程序扫描的示例语句”中的文本中是否存在字符串“应用程序扫描” List list1=新的ArrayList(); List list2=新的ArrayList() 到目前为止,我的方法一直在说list1的内容在list2中找不到,我不知道如何

我有两个不同的清单。一个只包含服务标题,另一个包含文本中带有服务标题的长句。我感兴趣的是找到一种方法来确定一个列表中的标题是否存在于另一个列表的长句中。我不想看这两个列表是否完全匹配。仅当其中一个包含另一个的内容时

[举例] 要验证列表2中“这是一个包含应用程序扫描的示例语句”中的文本中是否存在字符串“应用程序扫描”

List list1=新的ArrayList(); List list2=新的ArrayList()


到目前为止,我的方法一直在说list1的内容在list2中找不到,我不知道如何准确地解决这个问题,如果您使用Java 8,您可以使用:

if (list2.stream().anyMatch(l -> list1.stream().anyMatch(l::contains))) {

这意味着,要检查列表2中的每个元素可以包含列表1中的任何元素,如果您使用的是Java 8,则可以使用:

if (list2.stream().anyMatch(l -> list1.stream().anyMatch(l::contains))) {

这意味着,要检查列表2中的每个元素是否可以包含列表1中的任何元素,您必须迭代这两个列表。由于list2包含大文本,外部循环将用于list2:

public static void main(String[] args) {
    List<String> list1 = new ArrayList<>();
    list1.add("Application Scan");
    list1.add("Antivirus and HIPS");
    list1.add("Backup Administration");

    List<String> list2 = new ArrayList<>();
    list2.add("This is an example sentence that has Application Scan in it");
    list2.add("This is an example sentence that has Antivirus and HIPS in it");
    list2.add("This is an example sentence that has Backup Administration in it");

    list2.forEach(bigtext -> {
        list1.forEach(service -> {
            if (bigtext.contains(service)) {
                System.out.println(service);
            }
        });
    });
}
这样做也是一样的:

for (String bigText : list2) {
    for (String service : list1) {
        if (bigText.contains(service))
            System.out.println(service);
    }
}

您必须迭代这两个列表。由于list2包含大文本,外部循环将用于list2:

public static void main(String[] args) {
    List<String> list1 = new ArrayList<>();
    list1.add("Application Scan");
    list1.add("Antivirus and HIPS");
    list1.add("Backup Administration");

    List<String> list2 = new ArrayList<>();
    list2.add("This is an example sentence that has Application Scan in it");
    list2.add("This is an example sentence that has Antivirus and HIPS in it");
    list2.add("This is an example sentence that has Backup Administration in it");

    list2.forEach(bigtext -> {
        list1.forEach(service -> {
            if (bigtext.contains(service)) {
                System.out.println(service);
            }
        });
    });
}
这样做也是一样的:

for (String bigText : list2) {
    for (String service : list1) {
        if (bigText.contains(service))
            System.out.println(service);
    }
}

您误解了
包含的内容
/
包含的所有内容
对列表的作用。它检查每个元素是否相等,但不在每个元素上使用
String#contains
。想象一下你有两个
列表
或类似的东西。你认为
包含的
在这种情况下有什么作用?你能举一个例子说明在这种情况下会有什么作用吗?如果没有“匙形”注释,本可以做到……但谢谢你,这并不是针对你的。在我看来,你不是通过要求一个解决方案来学习编程的,有人会给你一个简单的答案。是的,我同意……但在我提出这个问题之前,我确实做了很多工作。我相信这听起来很可怜,因为答案很简单,但我仍在学习,更喜欢鼓励而不是讽刺。你误解了
包含的内容。它检查每个元素是否相等,但不在每个元素上使用
String#contains
。想象一下你有两个
列表
或类似的东西。你认为
包含的
在这种情况下有什么作用?你能举一个例子说明在这种情况下会有什么作用吗?如果没有“匙形”注释,本可以做到……但谢谢你,这并不是针对你的。在我看来,你不是通过要求一个解决方案来学习编程的,有人会给你一个简单的答案。是的,我同意……但在我提出这个问题之前,我确实做了很多工作。我相信这听起来很可怜,因为答案很简单,但我仍在学习,更喜欢鼓励而不是讽刺