黑马程序员_java基础——集合

黑马程序员
------- android培训java培训、期待与您交流! ----------


1:Collection:

(1)集合的由来:
由于对象数组的局限性,所以Java推出了集合供我们使用。
(2)数组和集合的区别?
A:长度
集合:可变
数组:固定
B:存储元素类型
集合:引用类型
数组:基本类型,引用类型
C:存储元素问题
集合:可以存储任意类型元素
数组:存储同一种类型的元素
(3)集合的继承体系结构:
Collection
|--List
|-ArrayList
|-Vector
|-LinkedList
|--Set
|-HashSet
|-TreeSet
学习:顶层,定义的是共性。
使用:底层,是具体的实现,具备最多的功能。
(4)Collection接口的方法:
A:添加功能
boolean add(Object obj)
B:删除功能
boolean remove(Object obj)
C:判断功能
boolean contains(Object obj)
D:迭代器
Iterator iterator()
E:长度
int size()
(5)迭代器
A:迭代器依赖集合而存在。

B:迭代器的实现是内部类的方式。

2:List:
(1)List的特点:
元素有序,可重复。
注意:存储和取出是一致的。
List的的三个子类
(1)三个子类的特点:
A:ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
B:Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
C:LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
(2)到底使用谁?
是否要安全:
是:Vector
否:ArrayList或者LinkedList
查询多:ArrayList

增删多:LinkedList

3:泛型
(1)把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊类型。
(2)格式:
<>
(3)在哪里使用?
看API,如果类或者接口后面有<>,就说明要使用泛型。
一般在集合中使用。
(4)好处:
A:解决了安全警告,优化了程序设计。
B:将运行时期的问题提前到了编译期间。

C:避免了强制类型转换。

4:增强for
(1)格式:
for(数组或者Collection集合的元素类型 变量 : 数组或者Collection集合的对象) {
使用变量。它就是元素。
}
(2)好处:
方便了数组和Collection集合的遍历。
(3)注意:
A:用来替换迭代器的。

B:在使用增强for的时候,最好先判断目标对象是否为null。

5:可变参数:
(1)为了解决后期传递不明确个数参数的问题,java提供了可变参数的用法。
(2)格式:
修饰符 返回值类型 方法名(数据类型... 变量) {

}
说明:
A:该变量其实是前面那个数据类型的一个数组。
 会自动进行封装。
B:如果一个方法有多个参数,可变参数必须在最后面。
(3)可变参数的一个使用:
Arrays类的一个方法:
将参数默认生成一个数组操作
6:|--Set
|--HashSet
底层数据结构是哈希表。
依赖两个方法:hashCode()和equals()。
顺序:
先判断hashCode(),如果不同,就直接添加到集合。
如果相同,继续走equals(),看其返回值类型:
返回true:说明元素重复,不添加。
返回false:直接添加到集合。
|--TreeSet
底层数据结构是二叉树。
如何保证唯一性:
根据比较的返回值是否是0。
如果保证排序:
两种方式:

自然排序:元素具备比较性

比较器排序:集合具备比较器

元素所属的类实现Comparable接口。

7:1:Map
(1)是由键值对组成的,键是唯一的,值是可重复的。
(2)Map集合的遍历
A:根据键找值。
a:获取Map集合所有键的Set集合。
b:遍历键的集合,获取到每一个键。
c:根据键到map集合中找值。

B:根据键值对对象找键和值。
a:获取Map集合所有键值对对象的Set集合。

b:遍历键值对对象的集合,获取到每一个键值对对象。

c:根据键值对获取对象

 
黑马程序员
------- android培训java培训、期待与您交流! ----------

                
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值