为了账号安全,请及时绑定邮箱和手机立即绑定

包含在 Java 中无法正常工作的方法

包含在 Java 中无法正常工作的方法

泛舟湖上清波郎朗 2021-12-10 16:28:59
我想检查一个字符串是否包含指定的单词。如果字符串包含指定的单词,我不想打印它。现在可能会有多余的词,但我只会打印不包括我的预定义词列表的唯一词,例如“交通”、“崩溃”。为此,我使用 Set 来存储唯一的字符串并使用 if 语句和包含来检查它。但它不能正常工作。虽然我预定义的限制词是“交通”,但我的程序仍然打印交通以及所有词。似乎过滤器/包含方法无法正常工作。PS:我将所有单词都转换为小写,以避免区分大小写。下面是我的代码。请帮我理解什么是错的?我正在使用 Java 代码。import java.util.HashSet;import java.util.Set;public class SetTest {    public static void main(String[] args) {        Set<String> placeSet=new HashSet<String> ();        String s1="traffic";        String s2="mumbai";        String s3="Mumbai";        String s4="roadcollapse";        placeSet.add(s1.toLowerCase());        placeSet.add(s2.toLowerCase());        placeSet.add(s3.toLowerCase());        placeSet.add(s4.toLowerCase());        for (String place:placeSet)        {            if (!place.contains("traffic") || !place.contains("collapse"))            {                System.out.println (place);            }        }    }}
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

如果字符串包含指定的单词,我不想打印它。


使用&&代替||


 for (String place:placeSet)

        {

            if (!place.contains("traffic") && !place.contains("collapse"))

            {

                System.out.println (place);

            }

        }


查看完整回答
反对 回复 2021-12-10
?
慕容708150

TA贡献1831条经验 获得超4个赞

如果您只想打印不包含任何列入黑名单的单词的单词,则条件应如下所示:


 for (String place:placeSet)

    {

        if (!(place.contains("traffic") || place.contains("collapse"))) {

            System.out.println (place);

        }

    }

因为要打印word不包含word_1或word_1,所以应该是 NOT (condition1 OR condition2)


如果有多个列入黑名单的单词,您也可以使用 Set:


public static void main(String[] args) {

    Set<String> blacklist = Stream.of("traffic","collapse").collect(Collectors.toSet());

    ...

    for (String place:placeSet) {

        if (blacklist.stream().noneMatch(place::contains)) {

            System.out.println (place);

        }

    }

}


查看完整回答
反对 回复 2021-12-10
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

对我来说方便的方法 - 流 API

    placeSet.stream()
            .filter(p -> !p.contains("traffic"))
            .filter(p -> !p.contains("collapse"))
            .forEach(System.out::println);


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 266 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号