Java之集合简单总结

集合介绍

集合是Java中的一种容器,可以保存多个数据。

集合和数组的区别:

​ a、集合长度是可变的,数组长度是固定的

​ b、数组中的元素必须数据类型一致,而集合中元素数据类型可以不一致

​ c、集合想要保存基本类型,必须是其对应包装类型

集合框架如下图:
在这里插入图片描述

List接口

特点:

​ a、有序的(指的不是自然顺序,是指存入2,1,3,取出还是2,1,3)

​ b、有索引

​ c、元素可以重复

常见的实现类:

​ ArrayList:底层采用数组结构,特点:查找快,增删慢,线程不安全。

​ LinkedList:底层采用链表结构,特点:查询慢,增删快,线程不安全。

​ Vector:底层采用数组结构,特点:查找慢,增删慢,线程安全。

ArrayList和Vector的唯一区别就是线程安全,Vector的大部分方法上都带有关键字synchronized。单一线程时,建议使用ArrayList,效率会高很多。

Set接口

特点:

​ a、无序的(指存入顺序和取出的顺序不一致),但是有一个实现类除外LinkedHashSet

​ b、无下标

​ c、元素唯一

常见的实现类:

​ HashSet:底层采用哈希表结构,特点:查询快,增删也快。

哈希表的结构

​ 可以使用对象.hashCode()获取哈希值。

​ 哈希表结构如何保证元素的唯一性?

​ 哈希表通过哈希值和equals俩个条件判断元素是否重复,也就是说,如果对象1和对象2相同,那么必须保证 hashcode一样,并且equals返回true。为了保证哈希表中元素的唯一性,我们必须重写hashCode()和equals方 法。

Map接口

特点:

​ a、Map是双列集合,由键值对组成。

​ b、Map中规定键不能重复,值可以重复,所有通过键能找到唯一对应的值。

常见实现类:

​ HashMap:

​ 底层采用数组+链表+红黑树(JDK1.8):

​ 存入对象时,会以数组的形式存入,当俩个对象的哈希值相同,equals为false时,俩个对象会以链表 的形式存入数组,当链表的个数大于8时,链表就会转成红黑树,提高查询效率。

​ 由于我们要保证键的唯一性,必须重写键所属类的hashCode和equals方法。

​ HashMap的键值可以为空。

​ LinkedHashMap:

​ 底层采用链式哈希表,所有是有序的。

​ 也要重写键所属类的hashCode和equals方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值