如果我们正在处理集合....例如ArrayList 然后,如果ArrayList包含两种类型的对象(Integer和String),我们想要将它们分开打印,就像一个组中的整数对象和另一个组中的字符串对象一样。 请有人告诉我我们该怎么做?
答案 0 :(得分:1)
您可以使用List<Object>
但在这种情况下您需要小心。必须检查它是哪个实例并相应地投射它。
见下面的例子:
编辑
为每个小组添加了列表
List<Object> list = new ArrayList<>();
list.add("a");
list.add(2);
List<String> strList = new ArrayList<>();
List<Integer> intList = new ArrayList<>();
for (Object o : list) {
if (o instanceof String) {
System.out.println("String is: " + o);
strList.add((String) o);
}
if (o instanceof Integer) {
System.out.println("Integer is: " + o);
intList.add((Integer) o);
}
}
<强> OP:强>
String is: a
Integer is: 2
答案 1 :(得分:0)
可能在程序之下可以帮助你,它将根据主列表中的对象动态创建一个类型的单独列表。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class SeparateType {
public static void main(String[] args) {
ArrayList<Object> arrayList=new ArrayList<>();
arrayList.add(101);
arrayList.add("Hello");
arrayList.add(102);
arrayList.add("World");
arrayList.add(103);
arrayList.add("String3");
arrayList.add(104);
arrayList.add("String4");
arrayList.add(1.0);
for (Map.Entry<Class,ArrayList<Object>> entry : convertToSeprateType(arrayList).entrySet()) {
System.out.println(entry.getKey().getSimpleName()+ " List values : " + entry.getValue());
}
}
public static <T> HashMap<Class,ArrayList<Object>> convertToSeprateType(ArrayList<Object> arrayList) {
HashMap<Class,ArrayList<Object>> hashMap=new HashMap<>();
final T val;
for(Object object:arrayList) {
if(hashMap.containsKey(object.getClass())) {
hashMap.get(object.getClass()).add(object);
}else {
ArrayList<T> list=new ArrayList<T>();
list.add((T) object);
hashMap.put(object.getClass(), (ArrayList<Object>) list);
}
}
return hashMap;
}
}
输出:
Integer List values : [101, 102, 103, 104]
Double List values : [1.0]
String List values : [Hello, World, String3, String4]