Java集合框架总结

常见三大类List、Set、Map

其中List、Set继承Collection,Map是独立接口

List(有序、可重复)常用实现类

ArrayList    底层数据结构为数组   查询快、增删慢  线程不安全,效率高

Vector        底层数据结构为数组   查询快、增删慢  线程安全,效率低

LinkedList  底层数据结构为链表   查询慢、增删快  线程不安全,效率高(继承queue)

Stack(栈)继承Vector  特点:FILO  注意没有Queue实现类,只有Queue接口。

Set(无序、不重复、线程不安全)

HashSet      底层数据结构是哈希表(无序、唯一)  唯一性(hashcode()与equals()保证)

LinkedHashSet  底层数据结构是哈希表和链表 (FIFO插入有序 唯一) 由链表保证有序,哈希表保证唯一

     注意这里的有序不是指的从小到大排序的有序,而是保证输入的数据存储有序

TreeSet    底层数据结构是红黑树(唯一、有序)  自然排序与比较器排序保证元素有序,根据比较的返回值是否为0保证元素唯一性

重点

如何选择:数据不能重复  Set                                              可以重复     List

                 有序选  TreeSet/LinkedHashSet                        线程安全选  Vector

                 无序选  HashSet                                                不安全   ArrayList(查询多)/LinkedList(增改多)

Map

HashMap 无序  线程不安全 效率高  key和value可以为null

TreeMap  有序  线程不安全

HashTable 无序 线程安全 效率低 不允许为null

排序

底层是数组的可以直接调用sort()方法进行排序

引用.sort((o1,o2)->{
    if(o1>o2) return 1;
    else if(o1<o2) return -1;
    else return 0;
});

注意:LinkedList底层是链表可以使用Collections.sort()方法进行排序

遍历

                                               顺序存储                                   链式存储

for循环                              读取性能高(适合)              时间复杂度太大(不合适)

迭代器                              不在乎时间的话可以使用       推荐使用

foreach                             基于迭代器实现的但是比使用迭代器慢,优点写着方便

使用for循环可以修改数据,使用迭代器不能删除数据,可以修改数据(对象为引用,可以使用修改调用类的set方法修改)

基本类型的包装类不能修改

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值