Vector ArrayList LinkedList HashSet TreeSet LinkedList比较

第一部分 Java基础

Set 和 List都是实现了Collection接口的子接口;而Map是另一个集合接口。

List列表:有序,存储元素的顺序和取出元素的顺序一致;有索引;可以存储重复元素。

  1. Vector:底层是数组,是可变长度的数组,长度不够时会新建数组,将原数组的元素拷贝到新数组,并将新元素添加到新数组中。Vector是同步的,也就是线程安全的。
  2. ArrayList:底层是数组,是可变长度的数组。ArrayList是不同步的。查询效率高,但是增删改效率低。
  3. LinkedList:底层是链表,是不同步的,查询效率低,增删改效率高。

Set 集合: 不包含重复元素;存入元素的顺序和取出元素的顺序不一定一致,具体的容器对象数据结构不同,顺序也有不同;取出元素只能使用迭代器。

  1. HashSet:底层是哈希表,是不同步的,不保证顺序的。
    哈希表是为了提高数组查找速度而出现的。特点是:查询速度快,不会出现重复元素,不关心元素顺序。哈希表保证元素唯一性通过hashcode和equals两个方法来实现。

  2. TreeSet:可以按照指定顺序给元素排序。不是同步的。TreeSet 保证元素唯一性的依据是看比较方法的返回结果是否是0,是0就认为是元素相同。
    TreeSet 排序方法一:让元素自身具备比较性,实现Comparable接口,覆盖compareTo方法。
    TreeSet 排序方法二:让容器自身具备比较性。容器一初始化就具备了比较功能。容器是在对象构造时完成初始化的,通过构造方法TreeSet(Comparator)。可以在容器初始化时可以指定一个比较器,实现Comparator接口,覆盖compare方法即可。

  3. LinkedHashSet:底层是哈希散列,查询速度块,有序(链表维护元素顺序)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. ArrayList: - ArrayList是基于数组实现的动态数组,可以自动扩容,可以存储任何对象类型。 - 数组的优点是可以随机访问元素,缺点是插入和删除元素需要移动其他元素。 - ArrayList支持快速随机访问,但插入和删除元素的效率较低。 2. LinkedList: - LinkedList是基于链表实现的,每个节点包含一个指向前驱和后继节点的指针,可以存储任何对象类型。 - 链表的优点是插入和删除元素不需要移动其他元素,缺点是不能直接随机访问元素,需要遍历整个链表。 - LinkedList支持高效的插入和删除操作,但随机访问元素的效率较低。 3. TreeSet: - TreeSet是基于红黑树实现的有序集合,不允许重复元素,可以存储任何对象类型。 - 红黑树的优点是能够自动排序,插入和删除元素的效率较高,缺点是随机访问元素的效率较低。 - TreeSet支持高效的插入、删除和查找操作,但随机访问元素的效率较低。 4. HashSet: - HashSet是基于哈希表实现的无序集合,不允许重复元素,可以存储任何对象类型。 - 哈希表的优点是能够快速查找元素,缺点是元素的顺序是随机的。 - HashSet支持高效的插入、删除和查找操作,但不能保证元素的顺序。 5. HashMap: - HashMap是基于哈希表实现的键值对集合,键和值都可以存储任何对象类型。 - HashMap的优点是能够快速查找元素,缺点是键和值的顺序是随机的。 - HashMap支持高效的插入、删除和查找操作,但不能保证键和值的顺序。 6. TreeMap: - TreeMap是基于红黑树实现的有序键值对集合,键不能重复,值可以存储任何对象类型。 - 红黑树的优点是能够自动排序,插入和删除元素的效率较高,缺点是随机访问元素的效率较低。 - TreeMap支持高效的插入、删除和查找操作,并且按照键的顺序排列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值