关于java集合

一、简单了解数据结构

数据结构分为线性结构、树结构、图结构和哈希结构

  • 线性结构:0至1个前趋或后继,线性结构包括顺序表、链表、栈(LIFO)、队列(FIFO);
  • 树结构:0至1个前趋和0至n个后继(n>=2)树是一种非常重要的有层次的非线性结构,树的结构比较稳定和均衡;
  • 图结构:0至n个直接前趋和0至n个直接后继(n>=2),图结构包括简单图、多重图、有向图和无向图等;
  • 哈希结构:没有直接前趋和直接后继,哈希结构通过某种特定的哈希函数将索引与存储的值关联起来,是一种查找效率非常高的数据结构;

二、JAVA集合类

Collection

Collection是集合类的顶层接口,它是按照单个元素存储的;有两个子接口:List和Set

  • List集合:
    List集合是线性结构的主要实现,最常用的是ArrayList和LinkedList两个集合类;其他的还有Vector,CopyOnWriteArrayList等;
    ArrayList:
    容量可以改变、非线程安全的、基于数组实现的;集合扩容时,会把原有的数据复制到新数组中;数组在内存中的存储空间是连续的,数组每一个元素都有索引,通过索引可以直接定位到某一个元素,因此查询效率较高,但是插入和删除效率较低,因为会涉及到元素的移动;
    LinkList
    基于链表实现的,本质是双向链表,LinkedList 除了继承AbstractList抽象类之外,还实现了Deque(double-ended queue)接口,这个接口同时具有队列和栈的性质;链表不需要连续的存储单元,链表中的上一个元素通过指针就可以指向下一个元素,查询时,首尾元素查询较快,中间元素较慢(因为他是按照链路顺序查找的线性结构),删除效率较高,删除元素时,只需要删除前后指针,重新建立指针就可以了;
    CopyOnWriteArrayList:
    通过赋值数组副本来实现写入,是线程安全的,读的时候不上锁,写的时候上锁,来保证线程安全;(写的时候先将数组复制一份(copyOf动作),修改副本,然后将修改后的副本插入原数组)
    Vector
    基于数组实现的,但是是线程安全的,早期使用,现在用的不多;使用了synchronized锁,增删改查所有方法都上锁,性能较低;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值