集合框架总结

集合框架总结


	数组:之前使用数组存储数据
		数组只能存同意类型的数据
		数组长度一旦确定不能改变
		数组对象中基本没有可用调用的方法来操作数组
		数组类型是使用 已有的类型+[] 组合而成
	集合:现在使用集合存储数据
		集合中能存储任意类型的对象
		集合的长度可以自动增长
		集合对象本身有很多方法可以调用,来操作集合中的数据
		集合是由API中定义好的接口和实现类组成的集合框架

同时,集合框架中还有很多不同特点的集合可以选择使用
		Collection和Map是集合框架中的俩大类型
	Collection类型的集合:
		1.可以使用Iterator迭代器
			因为Collection接口继承了Iterable接口
		2.直接把数据单独存放到集合中即可

		3.Collection接口有俩个常用的子接口
			List
				有序可重复
			
			Set
				无序不可重复
				Set下面有一个子接口SortedSet,允许用户给集合中的元素进行排序

		4.List接口常用的实现类
			ArrayList
				数组实现,通过下标访问效率高,在集合的中间位置插入数据效率低。

			LinkedList
				链表实现,通过下标访问效率低,在集合的中间位置插入数据效率高。

			Vector
				线程安全的集合。
			
		5.Set接口常用的实现类
			HashSet
				内部调用HashMap来实现功能。
				无序:
					需要使用数据的哈希值来存放数据
				不可重复
				根据对象的hashCode和equals方法来确定对象是否重复
							哈希值不同,俩个对象就一定不同。
							哈希值相同,俩个对象有可能相同,也能不同,这时候再使用equals进一步确定是否相同。

				TreeSet(实现的是SortedSet接口,SortedSet继承了Set接口)
					内部调用TreeMap来实现功能。
					可以给存储到集合中的元素见排序。
						自然排序
							只要对象实现了Comparable接口,对象中就一定一个compareTo方法,该方法可以比较俩个对象的大小。
							通过方法的返回值是正数、负数、零来确定对象的大小或者相等。
							TreeSet集合使用元素的compareTo方法比较出俩个对的大小后,就可以从小到大给对象进行排序了

						客户化排序
							可以在创建TreeSet集合的时候,在构造器的参数中,传一个比较器的对象Comparator。
							使用这个比较器,也可以比较出集合中俩个对象之间的大小。
							这个时候即使对象没有实现Comparable接口也是可以比较的,因为这个比较器。
							比较得出大小后,TreeSet依然可以从小到大给元素进行排序。
			Map类型的集合:
				1.不能使用Iterator迭代器
					Map接口没有继承Iterable接口
				2.需要使用key-value的方式来存放数据
			3.Map下面有一个常用的子接口SortedMap

			4.Map接口的实现类
				HashMap
					通过key-value存储数据
					key不能重复,如果重复会覆盖之前的数据,value可以重复,也就是需要保证key值无序不可重复。其实HashSet的无序不可重复就是利用了HashMap中的key的这一个特点来实现的。
				
					key值是无序:
						需要使用数据的哈希值来存放数据
					key值是不可重复的:
						根据对象的hashCode和equals方法来确定对象是否重复
							哈希值不同,俩个对象就一定不同。
							哈希值相同,俩个对象有可能相同,也能不同,这时候再使用equals进一步确定是否相同。
								Hashtable 实现了Map接口,它的效果和Vector类似,都是线程安全的集合。
5.SortedMap接口的实现类
			TreeMap
				可以给key值进行排序:

				自然排序
						只要对象实现了Comparable接口,对象中就一定一个compareTo方法,该方法可以比较俩个对象的大小。
						通过方法的返回值是正数、负数、零来确定对象的大小或者相等。
						TreeMap集合中的key使用对象中的compareTo方法比较出俩个对的大小后,就可以从小到大给key进行排序了

				客户化排序
					可以在创建TreeSet集合的时候,在构造器的参数中,传一个比较器的对象Comparator。
					使用这个比较器,也可以比较出集合中俩个对象之间的大小。
					这个时候即使对象没有实现Comparable接口也是可以比较的,因为这个比较器。
					比较得出大小后,TreeMap依然可以从小到大给key进行排序。
				在集合中,掌握几个核心:
				1.怎么利用接口和实现类创建出集合对象
					Collection c = new List接口或者Set接口的实现类
					List list  = new 接口的实现类(ArrayList Linked Vector)
					Set  set   = new set接口的实现类(HashSet TreeSet)
					
				Map map = new Map接口的实现类或者SortedMap接口实现类
					HashMap TreeMap HashTable

			2.怎么往集合中添加数据
				Collection类型集合 add方法
				Map类型集合 put方法
			3.怎么从集合中删除数据
				remove方法
			4.怎么在集合中查找数据
				list类型集合 可以实现下标查找数据 get方法
				set类型集合  比较麻烦,没有下标,可以从集合中一个一个拿出数据对比,看是否是自己想查找的数据。
				Map类型集合,可以使用key直接获取到对应的value
			5.怎么循环遍历集合拿到每一个元素
				Collection类型的集合都可以使用迭代器来循环拿到每个数据
				List类型的集合除了迭代器的方式之外,还可以for循环结合下标的方式拿出每个数据

				Map类型的集合
					keySet方法		取出所有key值
					values方法		取出所有value值
					entrySet方法	取出所有的键值对

			6.每种集合的特点
			7.常用集合内部的实现方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值