包含整数和字符串的Arraylist

use*_*572 8 java generics arraylist

我想创建一个应该包含整数和字符串的Arraylist.这可能吗?

我创建了两个Arraylist,如下所示:

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");
Run Code Online (Sandbox Code Playgroud)

我想将intList和strList放入一个新的ArrayList中.

我能这样做吗?如果是这样,怎么样?

Rav*_*yal 8

您可以执行以下操作,但必须放弃列表容器的泛型.

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

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

listOfMixedTypes.add(listOfStrings);
listOfMixedTypes.add(listOfIntegers);
Run Code Online (Sandbox Code Playgroud)

但是,更好的方法是使用a Map来跟踪两个列表,因为编译器不再能够阻止你混合类型,比如将String放入整数列表.

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));
Run Code Online (Sandbox Code Playgroud)


Sur*_*tta 7

如果可以避免,请避免使用此对象类型列表.去个人名单.

如果没有那么你应该去的类型 Object

List<Object> list = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)

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

检索时检查对象

for (Object obj: list) {
    if (obj instanceof String){
        // this  is string 
    } else if (obj instanceof Integer) {
       // this  is Integer 
    }
}
Run Code Online (Sandbox Code Playgroud)