Java黑马学习笔记-集合

集合

1. 集合和数组的异同
	a. 和数组一样都是容器
	b. 集合可以自动扩容,数组长度固定
	c. 存储数据类型的特点
		i. 数组可以存基础数据类型和引用数据类型
		ii. 集合只能存引用数据类型,不能直接存储基础数据类型,要使用包装类
2. 集合的基本使用
	a. ArrayList
		i. 成员方法
			1) 增删改查
	b. 泛型
		i. 限定集合中存储对象数据的类型
		ii. ArrayList<String> list = new ArrayList<>()
3. 集合练习
	a. 添加字符串和整数并遍历
	b. 添加学生对象并遍历
		i. 存储的是地址值,使用循环生成对象集合时,应将对象实例放在循环以内
	c. 查找用户是否存在
	d. 返回多个数据
4. 实战:学生管理系统

集合进阶

集合体系结构

	Collection单列集合
		一次只能添加一个数据
	Map双列集合
		一次添加一对数据

Collection

	collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。
	遍历方式
		迭代器遍历
		增强for遍历
		Lambda表达式遍历
	List
		List系列集合:添加的元素是有序、可重复、有索引
		List
			特点
				有序:存和取的元素顺序一致
				有索引:可以通过索引操作元素
				可重复:存储的元素可以重复
			List接口因为继承了Collection接口,所以具备Collection接口的所有方法,除此之外,List接口还额外实现了2种非常重要的方法:
				get(int index):获取指定索引位置元素
				set(int index, object obj):修改集合中指定索引位置处的元素为object;
			五种遍历方式
				子主题 1
				子主题 2
				子主题 3
				子主题 4
				子主题 5
			数据结构
				概念
		List接口的实现类
			ArrayList集合
				优点
					 ArrayList类实现了可变数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问;
				缺点
					向指定的索引位置插入对象或者删除对象的速度较慢。
			LinkedList集合
				优点
					LinkedList类采用链表结构保存对象。便于向集合中插入/删除对象,这种LinkedList类效率较高;
				缺点
					对于根据索引位置随机访问集合中的对象,LinkedList类实现List集合的效率较低;
			Vector
	Set系列集合
		Set系列集合:添加的元素是无序、不重复、无索引
		Set集合对象不按特定的方式排序,只是简单地将对象加入集合中,但是Set集合中不能有重复对象;Set集合由Set接口和实现Set接口的实现类组成。Set接口也继承了Collection类,所以实现Set接口的集合类也包含Collection相关的方法。
		Set接口的实现类
			HashSet
				概念
					HashSet类实现Set接口,由哈希表(实际上就是一个HashMap实例)支持,不保证Set集合的迭代顺序,此类允许使用null元素。
				LinkedHashSet
			TreeSet
				概念
					TreeSet不仅实现了Set接口,还实现了java.utl.SortedSet接口,因此TreeSet实现的Set集合在遍历时按照自然顺序递增排序,也可以按照指定比较器递增排序。
				TreeSet类增加的方法
					
				 存入TreeSet类实现的Set集合必须实现Comparable接口,该接口中的CompareTo(Object o)方法比较此对象与指定对象的顺序,如果该对象小于,等于或大于指定对象,则分别返回负整数,0,正整数。
	单列集合知识细节
		Collection
			Set
				特点
					无序、不重复、无索引
					Set集合的方法上基本上与collection的API一致
				实现类
					Hashset:无序、不重复、无索引
						子主题 1
						子主题 2
					LinkedHashset:有序、不重复、无索引
						子主题 1
						子主题 2
					Treeset:可排序、不重复、无索引
						子主题 1
						子主题 2
				子主题 3
			List和Set两者都可以使用的通用遍历方式
				迭代器遍历
					迭代器在遍历集合的时候是不依赖索引的
					迭代器在Java中的类是Iterator,迭代器是集合专用的遍历方式
						细节注意点

1,报错NoSuchElementException 2,迭代器遍历完毕,指针不会复位 3,循环中只能用一次next方法
4,迭代器遍历时,不能用集合的方法进行增加或者删除

				增强for遍历
					增强for的底层就是迭代器,为了简化迭代器的代码书写的。
					所有的单列集合和数组才能用增强for进行遍历
					格式
						
					细节
						修改增强for中的变量,不会改变集合中原本的数据
				Lambda表达式遍历
			方法实现
				添加元素
					如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列的是允许元素重复的
					如果我们要往set系列集合中添加数据,如果当前要添加元素不存在,方法返回true,表示添加成功。如果当前要添加的元素已经存在,方法返回fa1se,表示添加失败。因为set系列的集合不允许重复。

Map

	概念
		Map集合提供的是key-value的映射关系,Map中不能包含相同的key,可以有相同的value,Map集合包含Map接口以及Map接口的所有实现类。
		Map结合中允许值对象时null,而且允许多个。
	常用方法
		put(K key, V value)
			向集合中添加指定的key-value的映射关系
		get(Object key)
			获取key的对象,如果存在指定的key对象,则返回该key对象的值,否则返回null
		containsKey(Object key)	
			如果此集合包含指定key的映射关系,则返回true,否则返回false
		containsValue(Object key)
			如果此集合包含指定value的映射关系,则返回true,否则返回false
		keySet()
			返回此集合中所有key对象形成的Set集合
		valueSet()
			返回该集合中所有值对象形成的Collection集合
	实现类
		HashMap
			HashMap类是基于hash表的Map接口实现,HashMap通过哈希码对其内部的映射关系进行快速查找,并允许使用null键和null值,但是必须保证键的唯一性。
			优点
				HashMap类实现的Map集合添加和删除映射关系效率更高;
			缺点
				此类不保证映射的顺序;
		TreeMap
			 TreeMap类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此,集合中的映射关系具有顺序。
			优点
				集合中的映射关系具有顺序;
			缺点
				在添加、删除、定位映射关系时,效率较低,且不允许键为null;
	继学习单列集合之后,开始学习双列集合,Map集合提供的是key-value的映射关系,所有的Map集合有如下的特点:键不能重复,值可以重复,每一个键只能找到自己对应的值。Map集合包含Map接口以及Map接口的所有实现类。Map结合中允许值对象时null,而且允许多个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦笑的背后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值