【发布时间】:2020-09-30 13:40:28
【问题描述】:
我正在创建一个包含字符串和整数混合数据类型的 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
【问题讨论】:
-
您添加到列表中的是
Long值2,而不是Integer。 -
很明显,您要添加 2L(长整数)并检查 2(整数)。您不应使用原始形式的 ArrayList 或任何集合 API 以避免运行时问题。
-
您的
mixedArrayList仍应声明为List<Object> mixedArrayList = new ArrayList<>(); -
学习使用 Java 命名约定来获取可读代码。对象引用变量应以第一个小写字母命名,而不是
ArrayListObj。 -
老实说,拥有混合类型列表是一种代码味道。