非常非常之重要 ☞ 集合类

  1. 就是个存放引用的容器,不同容器是不同的数据结构罢了!(有自动拆装箱)
  2. 都在java.util.*里
  3. 集合类都支持泛型,建议使用泛型,不使用则默认Object(因为底层存储都是Object,所以集合类不能存储基本数据类型,int、long等,只能存储它们的包装类。
  4. SUN自己写的类都重写了equals、hashCode、toString方法(他在Object中建议别人重写,他自己不写 那不给自己一个大嘴巴子)
  5. SUN也在用自己重写的方法: 方法contains、remove底层都使用equals方法(String、Integer等包装类sun重写方法的目的就是为了这样用啊!不用那他重写个🔨啊他!)

集合类继承关系图

Collection直接存储方式

在这里插入图片描述
collection下:(有序实质是有下标)
在这里插入图片描述
SortedSet接口下会按照大小从小到大自动排序(而List只是顺序存储,并没有排序),但注意还是没有下标:
在这里插入图片描述
在这里插入图片描述
常把LinkedList作为队列使用: Queue<> queue = new LinkedList<>();
官方文档建议使用Deque< Integer > stack = new ArrayDeque< Integer >();代替栈

Map键值对方式存储

在这里插入图片描述在这里插入图片描述

集合类总结

在这里插入图片描述

方法:

Collection接口

不用泛型,默认存储类型是Object
在这里插入图片描述
注意 add返回boolean类型(如Set接口下的HashSet对象add一个重复值时会返回false)

还有个方法boolean addAll(Collection<? extends E> c)是将c集合中每个元素放入集合中 (而add( c )则会直接把c放入集合中)

注意 size返回元素个数,不同于 数组.length:返回的是容量

在这里插入图片描述
方法contains、remove底层都使用equals方法(String、Integer等包装类sun重写方法的目的就是为了这样用啊!不用那他重写个🔨啊他!)
注意 remove只会删除最先检索到的一个对象!

迭代器

c中有个内部类①实现了迭代器Iterator接口
c中重写了iterator()方法 返回一个①的对象
所以图中it为一个迭代器对象
在这里插入图片描述

迭代器第三个方法 remove()

注意: 迭代器获取到集合迭代结束 中间不能存在改变集合的代码 不然报错
而可以用 it.remove() :删除迭代器当前指向元素 来改变集合
在这里插入图片描述

泛型

不用泛型时,默认类型是Object,所以泛型必须 extends Object
在这里插入图片描述在这里插入图片描述注意:迭代器也必须指明泛型(不然it.next()返回Object类型)
在这里插入图片描述自定义泛型:
在这里插入图片描述
知识点:

  • ?表示不确定的java类型
  • T (type)表示具体的java类型
  • K V (key value) 分别代表java中的键 值
  • E (element) 代表Element
  1. <? extends E> 上界通配符:?<= E
  2. <? super E> 下界通配符:?>= E

增强for循环 foreach

在这里插入图片描述在这里插入图片描述

Map接口

记:key是Set集合,value是Collection集合
这些方法类似于LIst,key就相当于index,而value就是值,用key检索出value。
在这里插入图片描述
还有个void putAll(Map<? extends K, ? extends V> m)同addAll()

Set<Map.Entry<K, V>> entrySet() 方法

Entry是Map接口的内接口
此方法将Map集合的结点存储进Set集合
在这里插入图片描述

将结点类型存储进Set集合:
在这里插入图片描述

Map集合的遍历

Map集合不能遍历,所以要借助Set集合!

  1. 获取key,遍历key来遍历value。
    在这里插入图片描述
  2. 利用 Set<Map.Entry<K,V>> entrySet()方法:
    Set<Map.Entry<K,V>> entrySet() + foreach效率最高,最常用!
    在这里插入图片描述

杂识

Collection和Map都有类似于这种构造方法
所以可以利用这种构造方法进行:
Collection与Collection之间转换;
Map与Map之间转换

public ArrayList(Collection<? extends E> c)
public HashMap(Map<? extends K, ? extends V> m)

工具类java.util.Collections方法

  1. Collections.synchronizedList()
    在这里插入图片描述
    Collections.synchronizedXXXX()都采用了装饰器模式 (只是包装了一层synchronized,还是调用的原类)

  2. Collections.sort()
    只能排序List
    底层还是利用compareTo()排序的,所以还是要…两种方式

    在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值