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问题在于您使用的是of
List
。如果您使用
T
for
List
声明了
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的用户提供)正在使用原始类型,因为声明中说:您应该避免使用原始类型。执行一次强制转换甚至不比在声明
列表时提供泛型类型短。