ArrayList的输出方式以及因子增长数

本文深入解析ArrayList的工作原理,包括默认长度、增长策略及多种遍历方法。通过代码示例展示如何利用foreach、迭代器和Lambda表达式进行元素访问,同时介绍如何通过反射查看内部结构,以及高效地删除List内元素的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Arraylist 默认长度是10 当长度为10的时候,增长因子数是原来长度的0.5倍并且是向下取整
ArrayList arr = new ArrayList();
arr.add(“a”);
arr.add(“b”);
arr.add(“c”);
arr.add(“d”);
arr.add(“e”);
arr.add(“f”);
arr.add(“g”);
arr.add(“h”);
System.out.println(arr.size());
System.out.println("--------------------下标输出方式");
//下标输出方式
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i));
}

	 System.out.println("--------------------foreach输出(>=jdk1.5)");
	// //foreach输出(>=jdk1.5)
	// //集合中的元素
	 for (Object o : arr) {
	 System.out.println(o);
	 }
	
	 System.out.println("--------------------jdk1.8的语法糖");
	// //jdk1.8的语法糖
	 arr.forEach(a->System.out.println(a));
	
	 System.out.println("--------------------迭代器");
	// //迭代器
	 Iterator it = arr.iterator();
	 while(it.hasNext()) {
	 System.out.println(it.next());
	 }

	 ArrayList arr = new ArrayList(5);
	 for (int i = 0; i < 30; i++) {
	 print(arr);
	 arr.add(i);
	 }

	ArrayList arr = new ArrayList(5);
	arr.add("a");
	arr.add("b");
	arr.add("c");
	arr.add("d");
	arr.add("e");
	ListIterator list = arr.listIterator();
	System.out.println("--------------------下");
	//向下读取
	while(list.hasNext()) {
	System.out.println(list.next());
	}

	System.out.println("--------------------上");
	//向上读取
	while(list.hasPrevious()) {
	System.out.println(list.previous());
	}
	}

2.List反射查看
查看List源代码,ArrayList源代码
使用反射查看属性:
static void print(List arrayList) throws Exception {
Class c = arrayList.getClass();
Field elementDataField = c.getDeclaredField(“elementData”);
elementDataField.setAccessible(true);
Object[] arr = (Object[]) elementDataField.get(arrayList);
System.out.println(“elementData.length=” + arr.length);
}

3.List内的值删除
/* 逆向循环遍历删除 /
for(int n=list.size()-1;n>=0;n–) {
list.remove(n);
}
/
迭代器删除 */
Iterator lis=list.iterator();
while(lis.hasNext()) {
lis.next();//移动到下下个
lis.remove();
}

### Java ArrayList 输出方法 为了正确地输出 `ArrayList` 中的内容,在Java中有多种方式可以实现这一目标。最常用的方式之一是利用增强型for循环遍历列表并逐个打印元素,或者直接调用集合类提供的toString()方法来一次性展示整个列表的据[^1]。 下面是一个具体的代码实例用于说明如何输出一个 `ArrayList`: ```java import java.util.ArrayList; public class PrintArrayListExample { public static void main(String[] args) { // 创建一个新的ArrayList对象aList ArrayList<String> aList = new ArrayList<>(); // 向ArrayList中添加一些字符串类型的元素 aList.add("Apple"); aList.add("Banana"); aList.add("Orange"); // 方法一:使用增强for循环迭代访问每一个元素并打印出来 System.out.println("Method 1: Using enhanced for loop:"); for (String item : aList){ System.out.println(item); } // 方法二:直接调用toString()函快速查看全部内容 System.out.println("\nMethod 2: Directly using toString():\n" + aList.toString()); } } ``` 上述程序展示了两种不同的输出策略。第一种方法允许更灵活的操作,比如可以在每次输出前加入额外的信息;而第二种则是更为简洁高效的选择,尤其适合于调试目的或简单地检查当前状态下的据结构。 #### 注意事项 当处理大型 `ArrayList` 或者性能敏感的应用场景时,推荐采用批量操作而非逐一访问的方式来提高效率。此外,对于自定义对象组成的 `ArrayList` ,应当重写其内部元素的 `toString()` 方法以便能够得到有意义的结果表示形式[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值