java学习(三)-----集合

本文介绍了Java集合框架的基本结构,包括Collection接口及其实现类ArrayList、LinkedList、Vector等,并对比了它们的特点与适用场景。此外,还讲解了如何使用迭代器进行集合遍历,以及在遍历过程中修改集合可能引发的问题及其解决办法。

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

1、集合的体系

集合的体系是一个树形结构,最上面的一层是collection(根),这是一个接口,collection有两个直接子接口继承collection,一个是list接口(特点:有序,有索引,可重复存储),一个是set接口(无序,无索引,不可重复存储)。list接口下有三个类继承list,1、ArrayList  2、LinkList   3、Vector   这三个中最常用的是ArrayList 。set接口下有两个类,1、HashSet  2、TreeSet


2、迭代器    Iterator方法

Collection c = new ArrayList();
		c.add("a");
		c.add("b");
		Iterator it = c.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
上面程序为迭代器的使用方法。

3、并发修改异常的解决办法(java.util.ConcurrentModificationException)

	Collection c = new ArrayList();
		c.add("a");
		c.add("b");
		Iterator it = c.iterator();
		while(it.hasNext()){
			String str = (String)it.next();
			if("b".equals(str))
				c.add("d");            //数组对象添加
		}
		System.out.println(c);
上面的程序运行之后会产生java.util.ConcurrentModificationException,那么这个是怎么回事呢,原因:
Iterator it = c.iterator();
这行代码获取了迭代器,而在之后的循环中我们向数组中增加了元素,迭代器还是那个迭代器,这样就会报上面的异常。简单点说也就是在遍历的过程中对数组进行了修改。解决办法:

java.util.List s = new ArrayList();
		s.add("a");
		s.add("b");
		ListIterator lt = s.listIterator();
		while(lt.hasNext()){
			String str = (String)lt.next();
			if("b".equals(str))
				lt.add("d");          //迭代器添加
		}
		System.out.println(s);
注意。这两段代码的不同之处在迭代器不同了,还有添加的部分。
4、比较几种集合的特点

ArrayList:
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector:
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。


Vector相对ArrayList查询慢(线程安全的)
Vector相对LinkedList增删慢(数组结构)


LinkedList:
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。


Vector和ArrayList的区别
Vector是线程安全的,效率低
ArrayList是线程不安全的,效率高
共同点:都是数组实现的


ArrayList和LinkedList的区别
ArrayList底层是数组结果,查询和修改快
LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢
共同点:都是线程不安全的



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值