我将这两个ArraysList
插入了此List
:
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);
现在如何获取此列表中每个数组的大小?
答案 0 :(得分:5)
尝试这样
int sizeOfCategory = category.size();
int sizeOfNumber = number.size();
OR
for(Object li : list) {
System.out.println(((List) li).size());
}
答案 1 :(得分:1)
使用ArrayList从列表中删除get方法的结果对象。
for(int i=0; i<list.size(); i++) {
System.out.println(((ArrayList)list.get(i)).size());
}
答案 2 :(得分:0)
检查对象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());
答案 3 :(得分:0)
问题是您正在使用List
中的raw typ。如果您使用list
的{{3}} T
来声明List<T>
,而size()
提供了一种List
方法,那么您将自己得到它。使用原始类型的接口Object
将返回类型size()
的元素-因此,没有list
方法。
由于ArrayList
包含T
的两个实例,因此有一些ArrayList<?>
可用的候选者。例如:
List<?>
Collection<?>
category
这取决于您需要处理内部列表(number
,Collectiion<?>
)。如果只需要它们的大小,那么System.out.println(list.get(0).size()); // 4
System.out.println(list.get(1).size()); // 4
就足够了。
Integer
由于内部列表使用String
和<?>
作为其类型,因此在替换通配符String
方面没有太多共同之处。 Integer
和Comparable
都实现了List<Collection<? extends Comparable<?>>> list
,但只能与它们自己类型的实例进行比较。因此,声明list
不会产生任何附加值。因此,使list
包含两个不同类型的内部列表而没有有用的公共类型,将renderOperator = (value, index, record) => {
const edit = <Link exact="true" to="/table/basic-table2/articles">编辑</Link>;
const context = {};
return (
<div>
<Router context={context}>
<span>
{edit}
</span>
</Router>
<a
style={styles.removeBtn}
onClick={this.deleteItem.bind(this, record)}
>
删除
</a>
</div>
);
};
的可用性限制为不需要内部列表元素的具体类型的情况。
进一步阅读:generic type