Java集合的学习

概述

主要是Collection接口和Map接口

Collection接口包括Set、List、Queue

Map接口包括HashMap...

 Set、Map、Queue、List区别

Set:存放的事独一无二的,不可重复且无序。

List:存放的事可重复且有序的

Queue:按照一定存放排队规则确定存放顺序的,有序,可重复

Map:键值对存放  key-value

List:

Linkedlist:双向链表

Arraylist:数组

Vector:数组,stack栈结构

Set:

HashSet:基于HashMap实现的,存放的是不可重复的数据

LinkedHashSet:基于LinkedHashMap实现的

TreeSet:红黑树

Queue:

PriorityQueue:数组实现二叉堆,有序队列

ArrayQueue:数组+双指针

Map:

HashMap:主要是由数组和链表或者红黑树组成的。JDK1.8之后,链表长度超过8就变成了红黑树,是防止哈希冲突的

LinkedHashMap:就是在HashMap上,每个节点再连接成一个链表

HashTable:

TreeMap:红黑树

如何选用集合

1.不可重复的话就找set的

2.键值对的就找hashmap

3.栈结构就找list

4.队列就找queue

5.需要排序就用Treemap

ArrayList和LinkedList的区别

ArrayList是基于动态数组的实现的非线程安全的集合,占用内存,插入和删除时候都需要改动后续的所有元素后移或者前移,但是查找或者set更加方便

LinkedList是基于链表实现的非线程安全的集合。删除或者插入的话只需要该表指针指向,查找和set都需要遍历

大部分时候咱们都是使用ArrayList

ArrayList的扩容机制

创建ArrayList的时候,系统是传建一个空数组,添加第一个元素时,数组容量为10,当容量满了的使用,扩容到原先的1.5倍

无序性和不可重复性

1.无序性不是随机,是指元素存储时不是按照索引存储的,而是按照哈希值决定的

2.不可重复性:equals()判断的返回的是false,其需要重写hashcode()和equals()方法

Queue和Deque的区别

Queue是单向的队列,Deque是双向的队列。都服从者先进先出的方法。

因为容量问题出现异常。一种会抛出异常,一种是给一个特定的返回值

其实Queue可以直接当做栈来用,因为他有push()、pup()方法

ArrayDeque和LinkedList的区别

都实现了队列的接口。不同的是前者是可变长的数组和指针实现的。后者是链表实现的

ArrayDeque不支持存储Null数据。LinkedList是支持的

ArrayDeque是需要进行扩容的

PriorityQueue有序队列

出队顺序不是顺序出列的,是按照优先级顺序进行出队的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值