java - 使用 contains() 检查 Java ArrayList 中的零

标签 java c++ vector arraylist integer

我有这段代码片段,它基本上是在 long 整数的 ArrayList 中检查 0 值。

import java.io.*;
import java.util.*;

class main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        long zero = 0;

        ArrayList<Long> alist = new ArrayList();        
        alist.add (zero);

        if (alist.contains(0))
            System.out.println ("contains zero");
        else
            System.out.println ("contains no zero");
    }
}

我得到的输出是不包含零。相当令人不安! 这是错误还是预期的行为?

最佳答案

将此逻辑检查更改为:alist.contains(0L)。此行为与自动装箱/拆箱有关。 int 装箱为Integerlong 装箱为Long。在你的列表中你放了一个 long(装箱到一个 Long),然后你搜索一个 int(装箱到一个 Integer)......所以你找不到它.

关于java - 使用 contains() 检查 Java ArrayList 中的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967225/

相关文章:

c++ - 使用大括号括起来的初始化列表初始化结构 vector

c++ - C++ 中嵌套模板类返回类型的头文件中函数返回类型的语法

java - 将图表保存为 pdf 时消除模糊图表

java - 如何使用接受字符串作为组合框名称的方法填充 JComboBox

java - Java 中的嵌套正则表达式匹配

c++ - exclude/usr/include/c++/4.3/in用intel编译器编译代码

c++ - 将 char 与 const char * 进行比较

Java - 删除 "Variable",保留有副作用的分配

c++ - 头文件中的 .h 扩展名有何意义?

c++ - 访问 vector vector 中的 C++ vector 而不复制它