集合

						 Collection接口                                                         单独的接口 Map
		 Set接口	 	   List接口		Queue接口
		 
										List 接口 
			Vector					ArrayList					LinkedList

ArrayList
动态数组 长度可变的数组
最常用 线性表的顺序存储方式 查找快 插入删除慢

Why
数组的个数经常变化的时候,比如做学生管理系统,学生人数每年增长的情况…使用
数组比较麻烦,不仅要考虑业务,还要考虑维护数组.怎么解决? 使用动态数组啊

特点:
1.动态数组(长度可变的数组) 10----->15—>22—>33---->49
2.引用类型数组 里面的元素都是引用类型
3.有迭代顺序 迭代顺序为数组下标顺序

Vector
线程安全版本的ArrayList

LinkedList(链表)
线性表的链式存储方式 迭代顺序为链表的插入顺序 链表插入删除方便,查找慢

ArrayList和LinkedList是常用的两种存储结构,那么它们有哪些区别呢?

1、ArrayList和LinkedList可想从名字分析,它们一个是Array(动态数组)的数据结构,一个是Link(链表)的数据结构,此外,它们两个都是对List接口的实现。
前者是数组队列,相当于动态数组;后者为双向链表结构,也可当作堆栈、队列、双端队列
2、当随机访问List时(get和set操作),ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。
3、当对数据进行增加和删除的操作时(add和remove操作),LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。
4、从利用效率来看,ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;而LinkedList自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。
5、ArrayList主要控件开销在于需要在lList列表预留一定空间;而LinkList主要控件开销在于需要存储结点信息以及结点指针信息。

     							 	Set 
      	HashSet	 								SortedSet(接口)
      	LinkedHashSet  						NavigableSet(接口)
														TreeSet

HashSet
特点: 去重、无迭代顺序

(1) 去重
hashCode() 和equals() 必须都相同 才是意义上相同的对象 相同的去掉
只要hashCode()和equals()有一个不相同 不是相同的对象 能添加进去

(2)无迭代顺序 输出顺序和添加顺序不一致
额外知识(可以不管):实质输出顺序是根据一定算法求出来的 该算法和hashCode有些关系(可阅读源码并结合打断点查看)

LinkedHashSet(有迭代顺序的HashSet)

有迭代顺序的HashSet 迭代顺序是链表中 元素的添加顺序

TreeSet(有排序顺序的Set)

特点:
1.有排序顺序的set,放入该set的对象必须实现Comparable接口的compareTo方法来定义排序规则
2.使用compareTo去重!! compareTo 为0 表示 重复的对象 会去掉
3.重写放入TreeSet的对象的equals方法时,要保证equals为true时,compareTo为0
4.equals使用的条件 compareTo 也要用

												Map接口    
					Hashtable				HashMap						SortedMap(接口)
					Properties				LinkedHashMap			NavigableMap(接口)
																						TreeMap

HashMap

1.通过hashCode、equals方法来判断两个键是否相同,可以举科目和成绩的例子
2.相同的key key不变 value覆盖 DVD
3.没有排序顺序也没有迭代顺序的Map,允许有一个null键和多个null值

LinkedHashMap(有迭代顺序的HashMap)

Hashtable
Hashtable是线程安全版本的HashMap

TreeMap(有排序顺序的Map)
按key排序,也是使用compareTo 来确定同一个key

HashSet的实质

就是HashMap,把放到set里面的元素放到map的key里,而map的value
用一个静态常量补齐

在这里插入图片描述

泛型
1.规范添加到集合的对象的类型,只能为一种
2.泛型是编译时检查

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值