1. ArrayList与JSONArray的size()方法解析
在Java开发中,ArrayList和JSONArray是两种常用的集合类型,它们都提供了size()方法来获取集合中元素的数量。虽然它们来自不同的类库,但在使用size()方法时有许多相似之处。
1.1 ArrayList的size()方法
ArrayList是Java集合框架中最常用的动态数组实现,位于java.util包中。它的size()方法返回当前列表中实际存储的元素数量,而不是底层数组的容量。这是一个O(1)时间复杂度的操作,因为它只是返回内部维护的计数器值。
java复制@Test
public void testArrayListSize() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("1"); // 添加第一个元素
arrayList.add("2"); // 添加第二个元素
arrayList.add("3"); // 添加第三个元素
// 输出列表大小
System.out.println(arrayList.size()); // 输出: 3
}
注意:ArrayList的size()方法返回的是int类型,这意味着理论上ArrayList最多可以包含Integer.MAX_VALUE(2^31-1)个元素。但在实际应用中,由于内存限制,很少会达到这个上限。
1.2 JSONArray的size()方法
JSONArray是org.json包中表示JSON数组的类,它同样提供了size()方法来获取数组中元素的数量。与ArrayList类似,它的size()方法也是返回当前数组中存储的元素数量。
java复制@Test
public void testJSONArraySize() {
JSONArray jsonArray = new JSONArray();
jsonArray.add("1"); // 添加第一个元素
jsonArray.add("2"); // 添加第二个元素
// 输出数组大小
System.out.println(jsonArray.size()); // 输出: 2
}
JSONArray的size()方法同样具有O(1)的时间复杂度,因为它内部也是维护了一个计数器来跟踪元素数量。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. size()方法的常见使用场景
在实际开发中,size()方法有许多重要的应用场景,理解这些场景有助于编写更健壮的代码。
2.1 集合遍历
最常见的用法是在遍历集合时确定循环次数:
java复制// ArrayList遍历示例
for (int i = 0; i < arrayList.size(); i++) {
String element = arrayList.get(i);
System.out.println(element);
}
// JSONArray遍历示例
for (int i = 0; i < jsonArray.size(); i++) {
Object element = jsonArray.get(i);
System.out.println(element);
}
提示:在遍历ArrayList时,如果集合不会被修改,可以考虑将size()值缓存到局部变量中,避免多次调用方法。但对于现代JVM来说,这种优化通常是不必要的,因为JIT编译器会自动进行优化。
2.2 集合判空
虽然集合类提供了isEmpty()方法,但使用size() == 0也可以达到同样的效果:
java复制if (arrayList.size() == 0) {
System.out.println("ArrayList为空");
}
if (jsonArray.size() == 0) {
System.out.println("JSONArray为空");
}
2.3 容量检查
在进行某些操作前,检查集合大小可以避免异常:
java复制// 安全获取最后一个元素
if (arrayList.size() > 0) {
String last = arrayList.get(arrayList.size() - 1);
System.out.println("最后一个元素: " + last);
}
// 安全移除元素
if (jsonArray.size() > 5) {
jsonArray.remove(5); // 只有数组大小大于5时才移除第6个元素
}
