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集合里添加同一个元素的代码 ,就会爆这个提示,可以忽略不管。

相关推荐
notillusion几秒前
CUK#22162
java·php·程序优化
RainbowSea3 分钟前
11. Spring AI + ELT
java·spring·ai编程
RainbowSea7 分钟前
12. 模型RAG评测
java·spring·ai编程
代码不停30 分钟前
Java前缀和算法题目练习
java·开发语言·算法
豆沙沙包?30 分钟前
2025年--Lc200- 414. 第三大的数(大根堆)--Java版
java·开发语言
在下木子生37 分钟前
SpringBoot基于工厂模式的多类型缓存设计
java·spring boot·缓存
xxxxxxllllllshi41 分钟前
Java中Elasticsearch完全指南:从零基础到实战应用
java·开发语言·elasticsearch·面试·职场和发展·jenkins
无毁的湖光Al1 小时前
日常问题排查-Younggc突然变长
java·jvm·后端
_星辰大海乀1 小时前
网络原理 -- HTTP
java·服务器·http·get方法·post方法
没有bug.的程序员1 小时前
电商系统分布式架构实战:从单体到微服务的演进之路
java·分布式·微服务·云原生·架构·监控体系·指标采集