Java 获取此列表中每个数组的大小
我将这两个Java 获取此列表中每个数组的大小,java,arraylist,Java,Arraylist,我将这两个ArraysList插入到这个列表中: ArrayList<String> category = new ArrayList<>(); ArrayList<Integer> number = new ArrayList<>(); List list = new ArrayList<>(); category.add("cat"); category.add("dog"); ca
ArraysList
插入到这个列表中:
ArrayList<String> category = new ArrayList<>();
ArrayList<Integer> number = new ArrayList<>();
List list = new ArrayList<>();
category.add("cat");
category.add("dog");
category.add("fish");
category.add("Hamster");
number.add(1);
number.add(2);
number.add(3);
number.add(4);
list.add(category);
list.add(number);
ArrayList类别=新建ArrayList();
ArrayList编号=新的ArrayList();
列表=新的ArrayList();
类别。添加(“cat”);
类别。添加(“狗”);
类别。添加(“鱼”);
类别。添加(“仓鼠”);
编号。增加(1);
编号。添加(2);
编号。添加(3);
编号。添加(4);
列表。添加(类别);
列表。添加(编号);
现在,如何获取此列表中每个数组的大小?请这样尝试
int sizeOfCategory = category.size();
int sizeOfNumber = number.size();
或
for(Object li : list) {
System.out.println(((List) li).size());
}
检查对象instanceOf
,如果它是您添加的ArrayList
类型,则将其向下转换为ArrayList
并获取大小
list.add(category);
list.add(number);
for (Object o : list) {
if (o instanceof ArrayList) {
System.out.println(((ArrayList) o).size());
} else {
// unknown type
}
}
如果需要,也可以获取列表项类型
System.out.println("Object is type of " + o.getClass());
使用ArrayList从列表中强制转换get方法的结果对象
for(int i=0; i<list.size(); i++) {
System.out.println(((ArrayList)list.get(i)).size());
}
for(int i=0;i问题在于您使用的是ofList
。如果您使用T
forList
声明了List
,它提供了大小()
方法。使用原始类型,接口列表
将返回类型为对象
的元素-因此没有size()
方法
由于list
包含ArrayList
的两个实例,T
有一些候选项可用。例如:
ArrayList
列表
收藏
这取决于您需要如何处理内部列表(category
,number
)。如果您只需要它们的大小,那么Collectiion
就足够了
System.out.println(list.get(0).size()); // 4
System.out.println(list.get(1).size()); // 4
由于内部列表使用Integer
和String
作为它们的类型,因此它们没有太多共同之处来替换通配符
String
和Integer
都实现了可比性
,但只与它们自己类型的实例可比ist“如何获取此列表中每个数组的大小?”
:您希望得到什么样的结果?@ernest\k此列表然后作为另一个类的参数引用,并且无法访问数组类别和编号第二个选项将不起作用(实际上它给出了编译时错误)问题中的代码,因为列表
是使用原始类型列表
声明的(有关更多信息,请参阅my)。编译时错误不再存在。现在编译器发出警告:“对泛型类型列表的引用应参数化”。但这也适用于已接受的答案。我想知道为什么这里会有答案(由信誉>1k的用户提供)正在使用原始类型,因为声明中说:您应该避免使用原始类型。执行一次强制转换甚至不比在声明列表时提供泛型类型短。