Java 集合(1)----- List Set Queue Map

List Set Queue Map


此处输入图片的描述

List–>(有序 可重复)

List是Collection接口的一个子接口,存在的对象是有序的,List和set接口的区别是List中的元素可以重复(可以利用set去重)

ArrayList
动态数组,查询速度快,但是在中间位置插入速度慢,线程不安全
Vector
矢量队列,和ArrayList一样,是一个动态数组,由数组实现,但是线程安全的
Stack
使用数组实现的栈,使用场景就和他的名字一样,先进后出
LinkedList
双向链表,和ArrayList相反,在中间插入数据速度很快,但是查询速度就很慢,因为要从第一个开始遍历

Set–>(无序 不可重复)

Set对象不包括相同的元素(判断两个元素是否相同时根据equals方法,只有两个元素用equals比较返回true,set就不会接受对接),如果试图把两个相同的元素加入同一个集合中,add方法会返回false,可以包含一个null元素

HashSet

哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放(当向HashSet结合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据hashCode值来决定该对象在HashSet中存储位置。简单的说,HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode()方法返回值相 等)

LinkedHashSet
HashSet的子类,也同样有HashCode值来决定元素位置。以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代
TreeSet
提供一个使用树结构存储Set接口的实现,对象以升序顺序存储,访问和遍历的时间很快

Map–>(键值对、键唯一、值不唯一)

HashMap

Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力.

Hashtable

1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样 ; 2.HashTable不允许null值,key和value都不可以,HashMap允许null值,key和value都可以

TreeMap
基于红黑树实现,HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap

Queue–>(先进先出)

ArrayBlockingQueue

有界 blocking queue数组的支持。这个队列订单元素FIFO(先进先出)。 是一个典型的“有界缓冲区”,其中一个固定大小的数组是由生产者和消费者中提取的元素插入。一旦创建,无法改变的能力。试图put元素成一个完整的队列将导致操作阻塞;试图take元素从一个空的队列将同样的街区。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值