Set集合进行!contains判断IDEA提示Unnecessary ‘contains()‘ check

之前写过一个代码,用到了Set集合,判断了如果某个元素不存在就添加到集合中。今天翻看代码又看到了IDEAUnnecessary 'contains()' check爆黄提示。

来一段测试代码:

java 复制代码
public class SetTest {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        int i = 1;
        setAdd(set, i);

        // if判断不包含的元素和添加的元素不同,无提示
        if (!set.contains(1)) {
            set.add(2);
        }

        System.out.println(set);
    }

    private static void setAdd(Set<Integer> set, int i) {
        // Unnecessary 'contains()' check if判断不包含的元素和添加的元素相同,爆黄提示
        if (!set.contains(i)) {
            set.add(i);
        }
    }
}

Unnecessary 'contains()' check不必要的'contains()'检查,也就是说IDEA认为setAdd函数中的contains判断(注意if里面!取反了,判断存在的话不会提示,只有判断不存在才可能提示)是没有必要的。因为Set集合元素是唯一的,反复add都不会影响结果,所以IDEA觉得这个不存在的判断是可以不要的。
如果if判断了元素不存在Set集合中,且if代码块只有一行往Set集合里添加同一个元素的代码 ,就会爆这个提示,可以忽略不管。

相关推荐
孫治AllenSun1 分钟前
【shell】常用100个shell命令使用讲解
java·linux·服务器
.生产的驴5 分钟前
SpringBoot 开启热部署 项目热启动 一键调试无需 无需重启
java·运维·开发语言·spring boot·后端·spring·eclipse
江挽枫_Jangmiko24 分钟前
JAVA课堂笔记24(反射+设计模式)
java·开发语言·笔记·设计模式
不修×蝙蝠1 小时前
搭建Tomcat(六)---Response的实现
java·服务器·tomcat·response
真想骂*1 小时前
详解C++中“virtual”的概念及其含义
java·jvm·c++
Sunyanhui12 小时前
牛客网 SQL5将查询后的列重新命名
java·开发语言
白宇横流学长2 小时前
面向特定群体的健康管理平台设计与实现[源码+文档]
java
SUN_Gyq2 小时前
C++如何实现对象的克隆?如何实现单例模式?
java·开发语言·jvm·c++·算法
Beekeeper&&P...2 小时前
AddressBookController
java·前端·网络
Cooloooo2 小时前
最大堆【东北大学oj数据结构9-2】C++
java·数据结构·c++