Java集合类

一、常用集合类对比和说明

集合类型主要有3种:set(集)、list(列表)和map(映射)。

  • ArrayList、LinkedList、Vector

ArrayList:

底层数据结构使数组结构array,查询速度快,增删改慢,线程不安全,效率高,可以存储重复元素。因为是一种类似数组的形式进行存储,因此它的随机访问速度极快;

Vector:

底层也是采用数组来存储数据,与ArrayList相同,查询速度快,增删改慢。

区别:

Vector 是线程安全的,对外提供的读写方法,都是 synchronized 方法,有个别非synchronized
方法,其实它内部也是 synchronized 的

LinkedList:

底层使用链表结构,增删速度快,查询稍慢

  • HashMap 、HashTable

HashMap:

HashMap是基于哈希表的Map接口的非同步实现,继承自AbstractMap,AbstractMap是部分实现Map接口的抽象类。HashMap采用数组+链表实现,线程不安全。

HashTable:

Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value,线程安全。

比较:

HashTable是同步的,这个类中的一些方法加了synchronized关键字,因此线程是安全的。而HashMap是异步的,没有加synchronized关键字,线程是不安全的。
HashTable不能放入空值。HashMap可以将空值作为一个表的条目的key和value

  • HashSet、TreeSet

HashSet:

底层是用了哈希表(hash)算法。其底层其实也是一个数组,存在的意义是提供查询速度,插入的速度也是比较快,但是适用于少量数据的插入操作,判断两个对象是否相等的规则:1、equals比较为true;2、hashCode值相同。要求:要求存在在哈希表中的对象元素都得覆盖equals和hashCode方法。

TreeSet:

底层数据结构采用二叉树来实现,元素唯一且已经排好序;唯一性同样需要重写hashCode和equals()方法,二叉树结构保证了元素的有序性。根据构造方法不同,分为自然排序(无参构造)和比较器排序(有参构造),自然排序要求元素必须实现Compareable接口,并重写里面的compareTo()方法,元素通过比较返回的int值来判断排序序列,返回0说明两个对象相同,不需要存储;比较器排需要在TreeSet初始化是时候传入一个实现Comparator接口的比较器对象,或者采用匿名内部类的方式new一个Comparator对象,重写里面的compare()方法;

比较:

Treeset中的数据是自动排好序的,不允许放入null值。
HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值