day24 集合1

2 篇文章 0 订阅
  1. 队列是一种操作受限制的线性表。最擅长操作头和尾.
    单向队列(Queue):先进先出(FIFO),只能从队列尾插入数据,只能从队列头删除数据.
    双向队列(Deque):可以从队列尾/头插入数据,只能从队列头/尾删除数据.

  2. 栈(stack)又名堆栈,它是一种运算受限的线性表,后进先出(LIFO)。
    基于数组来实现栈结构:索引为0的位置就是栈底.最后是栈顶。底层可以数组来存储,也可以使用链表来存储.

  3. 如果数组中元素的值和索引位置存在对应的关系,这样的数组就称之为哈希表。提供查找数据的效率。

    哈希表的插入和查找是很优秀的.
    数组的扩性能较低 加载因子:0.75.
    数组是会记录添加顺序的,按照索引位置来存储的,允许元素重复.
    哈希表中元素是不能重复的,对象如果相同则hashCode相同-->index相同;不会记录元素添加的先后顺序.

  4. 树结构在做范围查询的时候,性能超群,一般的用来做索引的结构.

  5. 集合框架包含:对外的接口、接口的实现和对集合运算的算法(底层都对应着某一种数据结构的算法)。

    Vector类底层其实就是一个Object数组,则只能存储任意类型的对象(基本类型自动装箱了),支持同步
    集合中存储的对象,存储的是对象的引用,而不是对象本身.

  6. 集合类的操作方法:
    增加:
    boolean add(Object A) 将指定元素A添加到此向量的末尾,等价于addElement方法。
    void add(int index, Object element)  在此向量的指定位置插入指定的元素。
    boolean addAll(Collection c) :把c集合中的元素添加到当前集合对象中.
    删除:
    Object remove(int index) :删除指定索引位置的元素,并返回删除之后的元素.
    boolean remove(Object o):删除指定的元素.
    boolean removeAll(Collection c):从此集合中移除包含在指定 集合c中的所有元素。
    boolean retainAll(Collection c):在此集合中仅保留包含在指定 集合c中的元素,求两个集合的交集。
    修改:
    Object set(int index, Object element) :修改当前集合中指定索引位置的元素. 返回被替换的旧的元素.
    查询:
    int size()  :返回当前集合中存储几个元素.
    boolean isEmpty():判断当前集合中元素个数是否为0.
    Object  get(int index):查询指定索引位置的元素.
    Object[] toArray():把集合对象转换为Object数组.

  7. 栈(Stack):使用栈尽量使用ArrayDeque:
    Deque 接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的 set,应该优先使用此 set,而非此类。例如:
       Deque<Integer> stack = new ArrayDeque<Integer>();

  8. ArrayList类用来取代Vector类:底层原理一样.
           ArrayList list = Collections.synchronizedList(new ArrayList(...));
           在Java7之前,使用new ArrayList,一个元素都不存储,但堆空间初始化了长度位10的Object数组,之后new ArrayList,其实底层创建一个空数组. Object [] elementData = new Object[]{};在第一次调用add方法的时候,才会重新去初始化数组.

  9. LinkedList类:底层采用双向链表结构算法,是单向队列,双向队列,栈的实现类,线程不安全
    链表和队列,都特别擅长操作头和尾的节点。在LinkedList中存在Object get(int index),表示根据索引位置获取对应的元素,
    链表没有索引的概念。

  10.  数组结构算法: 插入和删除操作速度低,查询和更改较快.
     链表结构算法: 插入和删除操作速度快,查询和更改较慢.

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值