java集合总结

Collection

Collection是一个接口,它包含了基本操作和属性。Collection 包含了List和Set俩大分支。

一、List

List是一个有序的队列,其中的元素无序,存入顺序有序,可重复的线性结构,其中存放的是泛型实例的地址不是其值,通过地址访问元素,每一个元素都有它的索引。第一个元素的索引值是0。
List的实现类有LinkedList、ArrayList、Vector 和 Stack

ArrayList(动态数组)

  • 内部是用数组结构存放数据,封装数组的操作,每个对象都有下标
  • 内部数组默认的初始容量是10,如果不够会以1.5倍的容量增长
  • 查询快,增删数据效率会低
  • ArrayList 允许任何符合规则的元素插入甚至包括null。
  • 线性队列式结构,替代了 vector (动态数组)线程不安全。
  • Arrays 工具类也有一个ArrayList类,注意区分。

Vector(动态数组)

线性队列式结构(动态数组),线程安全的,方法基本与ArrayList相同,同步过程慢。

LinkedList(链表)

双向链表,不能随机访问。可以被当做栈、队列或双端队列来使用。
链表式结构(插入、删除较快、但查询较慢)不同步。

Stack

Stack 表是后进后出的对象堆栈,线程安全的,继承自Vector。

二、Set

Set是一个不允许有重复元素的集合,其中的元素有序,存入顺序无序。
Set的实现类有HashSetTreeSet,且全部线程不安全。
HashSet依赖于HashMap,它实际上是通过HashMap实现的;
TreeSet依赖于TreeSet,它实际上是通过TreeMap类实现的。

HashSet

使用哈希算法来存储元素,具有较好的存取、查找特性。
重复时不会继续放入,由哈希表(HashMap 实例)支持。
它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变,此类允许使用 null 元素。

  1. 不能保证元素的排列顺序(迭代是无序)(存在逻辑顺序)
  2. 线程不安全。
  3. 可以包含null

Map

Map是一个映射接口,即key-value键值对。
Map中的每一个元素包含 一个key 和key对应的value。

  • Map可以根据键来提取对应的值
  • Map的键不允许重复,每个键最多只能映射到一个值,如果重复,新的键值对会覆盖老的键值对。
  • Map存放的都是无序的数据
  • Map的初始容量是16,默认的加载因子是0.75
    HashMap、TreeMap 和 WeakHashMap 都是继承于 AbstractMap。Hashtable继承于Dictionary,但是它实现了Map接口。
    Map中不能应用迭代器,当需要获取所有元素时
  1. 先获取一个视图,再迭代调用获取函数
  2. Set: 把Map中的所有key值存入到Set集合当中,keySet()
  3. 是把Map中的一对键值对key和value作为一个Map.Entry<K,V>整体放入Set

HashMap

哈希表结构
非同步
无序
支持null作为键 或值元素
判断键的标准:hashcode + equals
子类:LinkedHashMap 保存存入顺序

Hashtable

哈希表结构
同步
不支持null作为键 或值元素
子类:Properties:用来存储键值对型的配置文件信息。可以和IO技术结合

TreeMap

二叉树结构
根据键排序(默认)
也可以根据值的 Comparator排序

Iterator

Iterator 是一个遍历集合的工具,Collection 的实现类都要实现iterator()函数,返回一个Iterator对象。

ListIterator

ListIterator 是专门遍历 List

Enumeration

Enumeration 的作用和 Iterator 一样,也是遍历集合,但Enumeration只能在 Hashtable、Vector、Stack中使用。

Arrays 和 Collections

Arrays 和 collections 它们是操作数组、集合的俩个工具类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值