简述java集合中List集合和Set集合

集合

概述

容器技术,数组、向量Vector、哈希表Hashtable、 字典Dictionary、枚举Enumeration、 属性列表Properties

java集合体系结构

集合体系结构
Collection接口下: List接口(有序[存储顺序],元素可重复) 和 Set接口(无序,元素不可 重复)
Set集合是如何保证元素不重复? 根据equalshashcode判断,一个自定义对象要存储在Set中,必 须重写equalshashCode方法
Collection接口和Map接口: Map是对Collection的补充,两个没什么关系
Map存储是<k,v> 键值对
Collection存储是 单个值
List接口的实现类: ArrayList、LinkedList、Vector
Set接口的实现类: HashSet、TreeSet、LinkedHashSet
Map接口的实现类: HashMap、TreeMap、Hashtable

List接口

ArrayList
LinkedList
Vector

ArrayList

1.底层通过数组实现
2.数组初始容量为10(不是new就是10,在第1次执行add方法的时候)
3.内部通过数组拷贝实现扩容,当容量超出时,会扩容为原来的1.5倍
4.线程不安全(不同步)JDK1.5版本设计一个CopyOnWriteArrayList
5.数组一旦创建不能改变,因此在非末端插入和删除数据的时候,由于可能会涉及到到数组拷贝问题,因此修改和删除效率比较低。

LinkedList

1.底层通过双向链表实现
元素是通过首尾指针连接,在进行修改(新增、删除)元素的时候只需要修改
指针即可,一般情况修改效率要比ArrayList高,但是在查询时,LinkedList比ArrayList效率低,链
表从第1个元素开始依次向后搜索。
2.比较适合数据的动态插入和删除
3.随机访问和遍历速度比较慢.

Vector

1.底层通过数组实现,早期集合类JDK1.0
2.线程安全
3.淘汰 -单线程环境建议使用ArrayList,多线程环境建议使用CopyOnWriteArrayList

Set集合

特点:

无序(不是按照存储顺序存储的)
不可重复(底层会调用equals方法,若返回true则不能存入相同的元素) Set集合存入自定义类型,则必须要重写 equals和hashCode方法

HashSet

HashSet集合,采用哈希表数据结构存储数据,保证元素的唯一性依赖的方法 equals()hashCode()

LinkedHashSet

HashSet 保证元素的唯一性,有保存了插入时的顺序;

TreeSet

TreeSet 存储的元素,,元素的数据类型必须实现 Comparable接口比较器
特点: 底层会调用这个接口中比较的方法 compareTo方法进行比较排序 会对元素进行排序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值