contains 方法类型匹配
1、案例引入
Set<Integer> nums = new HashSet<>();
nums.add(1);
nums.add(2);
nums.add(3);
Long i = 1L;
System.out.println(nums.contains(i));
System.out.println(nums.contains(i.intValue()));
# 输出结果
false
true
2、案例分析
nums.contains(i) 传入的是 Long 对象
HashSet 中存的都是 Integer 对象
contains 底层会调用 equals 判断类型
Integer.equals(Long) 永远返回 false(类型不同)
所以输出 false
i.intValue() 返回 int 基本类型(值为 1)
传入 contains 时会自动装箱成 Integer
集合里正好有 Integer 的 1
所以输出 true
3、小结
集合泛型明确类型后,保持 contains 方法参数类型一致
使用 intValue、longValue 等方法先转换成匹配的类型


