包含整数和字符串的数组列表

2022-09-04 01:23:03

我想创建一个数组列表,它应该包含整数和字符串。这可能吗?

我创建了两个数组列表,如下所示:

ArrayList<Integer> intList=new ArrayList<Integer>();
    intList.add(1);
    intList.add(2);

ArrayList<String> strList=new ArrayList<String>();
    strList.add("India");
    strList.add("USA");
    strList.add("Canada");

我想把intList和strList放到一个新的ArrayList中。

我能做到吗??如果是这样,如何??


答案 1

您可以按如下方式执行此操作,但必须放弃列表容器的泛型。

List<List> listOfMixedTypes = new ArrayList<List>();

ArrayList<String> listOfStrings = new ArrayList<String>();
ArrayList<Integer> listOfIntegers = new ArrayList<Integer>();

listOfMixedTypes.add(listOfStrings);
listOfMixedTypes.add(listOfIntegers);

但是,更好的方法是使用 a 来跟踪两个列表,因为编译器将不再能够阻止您混合类型,例如将 String 放入 Integer 列表中。Map

Map<String, List> mapOfLists = new HashMap<String, List>();

mapOfLists.put("strings", listOfStrings);
mapOfLists.put("integers", listOfIntegers);

mapOfLists.get("strings").add("value");
mapOfLists.get("integers").add(new Integer(10));

答案 2

如果可以避免,请避免此对象类型列表。选择单个列表。

如果没有,那么你应该选择类型Object

List<Object> list = new ArrayList<Object>();

它接受所有类型对象,但在检索时必须小心。

检索时检查对象

for (Object obj: list) {
    if (obj instanceof String){
        // this  is string 
    } else if (obj instanceof Integer) {
       // this  is Integer 
    }
}

推荐