首页 > 解决方案 > Java ArrayList contains 方法不识别整数数据类型

问题描述

我正在创建一个包含字符串和整数的混合数据类型的 ArrayList。然后我使用 contains 方法来识别和打印特定成员。尽管 contains 方法识别字符串,但它似乎无法识别列表中存在的整数值。如何检查混合类型列表中的整数值?

代码:

public class ArrayListClass {

    public static void main(String[] args) {
        ArrayList mixArrayList = new ArrayList();

        ArrayListClass ArrayListObj = new ArrayListClass();
        mixArrayList.add("Alpha");
        mixArrayList.add("Beta");
        mixArrayList.add("Gamma");
        mixArrayList.add("Delta");
        mixArrayList.add(1);
        mixArrayList.add(2L);
        mixArrayList.add(3.0);
        mixArrayList.add(4F);
        mixArrayList.add(ArrayListObj);

        System.out.println("mixArrayList is "+ mixArrayList);

        if (mixArrayList.contains(2)) {
            System.out.println("List contains 2");
        }
        else{
            System.out.println("List does not contain 2");
        }
        if ((mixArrayList.contains("Gamma"))) {
            System.out.println("List contains Gamma");
        }
        else{
            System.out.println("List does not contain Gamma");
        }
    }
}

输出:

===========
mixArrayList is [Alpha, Beta, Gamma, Delta, 1, 2, 3.0, 4.0, ArrayListPractice.ArrayListClass@b4c966a]
List does not contain 2
List contains Gamma

Process finished with exit code 0

标签: javaarraylistcontains

解决方案


列表是通用类。请参阅Oracle教程

因此,当您执行以下操作时:

List<Object> list = new ArrayList<>();
list.add(2L);

2L 盒子作为一个Long,而盒子2作为一个Integer

所以list.contains(2)寻找一个Integer,因此不会找到你的2L条目。


推荐阅读