I am creating an ArrayList with mixed data types of string and integers. Then I am using contains method to identify and print specific members. Though the contains method identifies string, it does not appear to identify integer values present in the list. How can I check for integer values in a mixed type list?
Code:
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");
}
}
}
Output:
===========
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
Lists are generic classes. See Tutorial by Oracle.
So when you do the following:
List<Object> list = new ArrayList<>();
list.add(2L);
The 2L
boxes as a Long
, whereas 2
boxes as an Integer
.
So list.contains(2)
looks for an Integer
and thus won't find your 2L
entry.