Java中的集合

本文详细介绍了Java集合框架中的Collection和Map接口,包括它们的基本概念、特点以及主要实现类如ArrayList、LinkedList、HashSet、HashMap、TreeMap等的区别。重点对比了线程安全、数据结构、插入删除效率等方面,强调了不同场景下选择合适集合类的重要性,同时也提及了迭代器、快速失败机制等核心概念。
摘要由CSDN通过智能技术生成

第一章 集合概述

我们知道在集合的框架的继承树中,最顶层有两个接口,分别是Collection和Map.
Collection表示一组纯数据,而Map则表示一组键值对

Collection是最基本的集合接口,一个Collection代表一组对象,也就是Collection的元素.JDK不提供直接继承自Collection的类,JDK提供的类都是继承自Collection的子接口,比如说List和Set.

所有实现Collection接口的类都必须提供两个标准的构造函数,无参构造和有参构造,无参构造用于创建一个空的Collection,有参构造用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素.

第二章 Collection接口的介绍

这里写图片描述

1 Collection接口下有三个子接口,分别是List,Set和Queue
2 List接口:List接口中有ArrayList,LinkedList,Vector,和Stack.我们用的比较多的是ArrayList和LinkedList,这两者的区别很明显,从名字上就能看出来.ArrayList底层通过数组实现,所以其随机访问速度比较快,但是对于频繁的增删的情况,效率就比较低了,而LinkedList,底层是通过链表来实现的,所以增删比较快,但是对于随机访效率比较低.至于Vector,他是ArrayList的线程安全版本,说到线程安全,大家估计机会想到,他的执行效率低.Stack则对应栈数据结构,Vector和Stack使用的很少,在这就不多说了
3 Set接口:Set接口表示数学意义上的集合概念.Set中不包含重复的元素,即Set中不存在两个这样的元素,使得a.equals(b)为true.由于Set接口提供数据结构是数学意义上的集合概念,因此他需要支持对象的添加,删除,而不需要提供随机访问.元素加入Set之前需要先执行hashCode()方法,如果值已经在集合中存在,则要继续执行equals()方法,如果equals方法返回的结果也为真,则证明该元素已经存在,新元素就会把旧元素覆盖.如果hashCode()返回的值不同,则直接加入集合.这里请记住一点,对于Set集合中的元素,hashCode值不同的元素一定不相等,但是不相等的元素,hashCode值可能相同.
3.1.1.1 说完Set集合的一般特性后,再来说一下Set接口下的几个子类,Set接口下有HashSet,LinkedHashSet和TreeSet.HashSet和LinkedHshSet的区别是LinkedHashSet的输出顺序和输入顺序是一致的,而HashSet则不然,对于TreeSet,默认情况下是按照字符的自然顺序进行升序排列的
4 List和Set的区别
4.1.1.1 其实他们的区别很简单,就是List在添加元素的时候,不执行额外的操作,并且可以重复,而Set在添加元素的时候需要执行hashCode方法等一系列的判断, 一句话就是List集合有序可重复,Set集合无序唯一
4.1.1.2 Set集合检索效率低,删除和插入效率高,插入和删除不会引起元素位置的变化;List集合和数组类似,List集合可以动态增长,查找元素效率高,删除和插入效率低,因为会引起元素位置的变化
5 Collection集合的遍历

常见的集合遍历方式有以下四种:

5.1 Iterator:迭代输出,是使用最多的输出方式
5.2 ListIterator:是Iterator的子接口,专门用于输出List中的内容
5.3 foreach输出:JDK1.5之后提供的新功能,可以输出数组或集合。
5.4 for循环
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值