[黑马程序员]集合_List总结

/*
 * Collection
 * 	|--list:元素有序,元素可以重复,因为该集合有索引
 * 		|ArrayList:底层的数据结构是数据结构。特点:查询速度很快,但是增删慢(线程不同步)
 * 		|LinkedList:底层使用的链表数据结构。特点:查询速度慢,增删快(集合面试不能挂。。。)
 * 		|Vector:底层是数组结构(线程同步,被ArrayList替代)
 *		(注:ArrayList初始10,每次延长50%,Vector初始10,每次延长100%)* 
 * 	|--set:元素无序,元素不可重复
 * 
 * 
 * List特有方法:
 * 	凡是可以操作角标的方法都是特有方法.
 * 增:
 * 	add(index,element);
 * 	addAll(index,Collection);
 * 删:
 * 	remove(index);
 * 改:
 * 	set(index,element);
 * 查:
 * 	get(index);
 * 	subList(from,to);
 * 	listIterator();
 * 
 * List集合特有迭代器,ListIterator是Iterator的子接口。
 * 在迭代时,不可以通过集合对象的方法操作集合中的元素。
 *因为会发生ConcurrentModificationExpection异常
 *
 * 所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,
 * 只能对元素进行判断,取出,删除的操作。
 * 如果想要其他的操作,如添加,修改等就需要使用其子接口,ListIterator.
 * 
 * 该接口只能通过List集合的 listIterator方法获取。
 * 
 *
 * 
 */

package test.itheima;

import java.util.*;

public class ListDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ArrayList al = new ArrayList();

		al.add("java01");
		al.add("java02");
		al.add("java03");
		System.out.println("Original al: " + al);

		/*
		 * 使用iterator方法 // 在迭代过程中添加或者删除元素 Iterator it = al.iterator();
		 * 
		 * while (it.hasNext()) { Object obj = it.next();
		 * 
		 * if (obj.equals("java02")) { //al.add("java01010");会有异常 it.remove(); }
		 * 
		 * System.out.println("obj=" + obj); }
		 * System.out.println("Modified al: " + al);
		 */

		// 使用listIterator
		ListIterator li = al.listIterator();

		while (li.hasNext()) {
			Object obj = li.next();

			if (obj.equals("java02")) {
				//li.add("java101010");
				li.set("thisModified");
			}
		}
		System.out.println("Modified al: " + al);

	}

	public static void method() {

		ArrayList al = new ArrayList();

		al.add("java01");
		al.add("java02");
		al.add("java03");
		System.out.println("Original al: " + al);

		// 指定位置添加元素:
		al.add(1, "java09");
		System.out.println("add al: " + al);

		// 指定位置删除元素:
		al.remove(2);
		System.out.println("remove al: " + al);

		// 指定位置修改元素:
		al.set(0, "java0001");
		System.out.println("modify al: " + al);

		// 通过角标获取元素:

		System.out.println("get al: " + al.get(0));

		// 获取所有元素:

		for (Iterator it = al.iterator(); it.hasNext();) {
			System.out.println(it.next());
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值