Java中的集合复习笔记

集合

集合存储元素时,存储的时元素的地址信息。

java中的集合分为两种:单列集合和双列集合

单列集合:collection,集合中每个元素只包含一个值

双列集合:Map,集合中每个元素包含两个值,即键值对

collection集合的特点

(List集合和Set集合的特性刚好相反)

List集合:添加元素是有序的、可重复,有索引

ArrayList、LinkedList:有序、可重复、有索引

Set集合:添加元素是无序的、不可重复、无索引

Hashset:无序、不重复、无索引

LinkedHashSet:有序、不重复、无索引

TreeSet:按照大小默认升序排序、不重复、无索引

集合中常用的方法:

1、add()方法,添加成功返回true,添加失败返回false

2、clear()方法,清空集合中的元素

3、isEmpty()方法,判断集合是否为空

4、size()方法,获取集合的大小

5、contains()方法,判断集合是否包含某个元素

6、remove()方法,删除某个元素:如果有多个重复的元素默认删除最前面的一个

7、toArray()方法,将集合转换为数组

8、addAll()方法,将一个集合中的数据全部添加导另一个集合中去(前提是两个集合中的数据类型一致)

集合的遍历方式(Collection):

迭代法(集合遍历的专用方式):

步骤:1、从集合对象中获取迭代器对象。--- Iterator<String> it = x.iterator()

            2、调用next()方法 it.next()

            3、使用hasNext()方法进行循环遍历while(it.hasNext()){...}

增强for(迭代器遍历集合的简化写法):

for(元素的数据类型  变量名:数组或者集合){...}

lambda表达式:

List集合

List底层是一个接口,不能生成对象,如果要生成对象,需要使用其的实现类来实现

1、特点

2、遍历方法

for循环

迭代器

增强for循环

lambda表达式

ArrayList集合的底层原理及应用场景

底层原理:基于数组实现

数组的特点:

查询速度快:(根据索引查询)查询数据是根据地址值和索引定位,查询任意数据耗时相同

删除效率低:可能需要把后面很多的数据进行前移

添加效率极低:可能需要将后面很多数据后移,再添加元素;或者也可能需要进行数组的扩容、

LinkedList集合的底层原理及应用场景

基于双链表实现

链表中的节点是独立的对象,在内存中是不连续的,每个节点包含数据值和下一个节点的地址

链表的特点:查询慢,无论查询那个数据都要从头开始找(即使链表是有索引的),增删快。

应用场景:

设计队列:先进先出

设计栈:后进先出

Set集合

特点

HashSet集合的底层原理

加载因子为0.75的意思是当要存的在数组中的数值大小小于数组的长度×0.75数值不会进行扩容,否则会扩容为原来的两倍。

 解决方案:重写hashcode和equals()方法

LinekedHashSet集合的底层原理

TreeSet集合

选择就近的比较器进行排序 

 

 集合的注意事项:并发修改异常问题

Map集合 

Map系列集合的特点都是由键决定的,值只是一个附属品,值不做要求

HashMap(由键决定特点):无序、不重复、无索引(用的最多)

LinkedHashMap(由键决定特点):有序、不重复、无索引

TreeMap(由键决定特点):按照大小默认升序排序,不重复、无索引

常用方法

遍历方法

HashMap

 LinkedHashMap

TreeMap

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值