Java中集合的简介,list(ArrayList,linkedlist),set(HashSet,TreeSet),Map(TreeMap,HashMap)

集合类

概述: 在Java中我们可以用数组来保存对象,但是有一个缺点就是数组的长度不能改变,我们要在创建数组的时候来指定数组的长度,有时我们也不能确定我们将来要保存多少对象。所以为解决这个数组的这个弊端,Java就为们引入了一个新的类叫集合,这个类可以存储任意对象,而且长度可变;集合按照存储结构可以分为单列集合Collection和双列集合Map。

  • Collection: 单列集合的根接口,它下面有两个重要的子接口,分别是List和Set,其中List的特点是元素有序,元素可重复。Set的特点是元素无序且不可重复。List的主要实现类有ArrayList和Linkedlist,Set接口的主要实现类有HashSet和TreeSet。
  • Map: 双列集合的根接口,用于存储具有键值映射关系的元素,每个元素都包含一对键值,在使用Map集合是可以根据键去查询值。Map接口的主要实现有HashMap和TreeMap。

Collection接口:

List:

List接口的对象称为 List集合,在List集合中允许出现重复元素,所有的元素是以一种线性的范式进行存储,在程序中可以通过索引的方式来访问集合中的指定元素。另外,List集合还有一个特点就是元素是有序的,即元素的存入方式和取出方式是一致的。

ArrayList:

ArrayList内部是一个可变长度的数组对象,ArrayList无参初始化是,容量是0,往list里面添加一个元素,容量开始扩容,扩容大小是10,当我的size到达10之后,再继续添加时,容量是拿当前的容量乘以1.5倍,舍去小数取整,即为新容量大小。
特点: 因为ArrayList底层为数组,所以增删比较慢,查找快,而且允许通过索引查找元素;

linkedList:

LinkedList内部是一个双向循环列表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,使链表的前后链接起来。
特点: 因为底层是链表,所以增删比较快,查找比较慢。

Set集合:
HashSet:

HashSet底层是HashMap ,数组加链表的结构(JDK1.8后是数组加链表或红黑树),它所存储的元素是不可重复的而且是无序的。要向HashSet集合中存储一个元素的时候要调用hashcode()方法获得哈希值,根据哈希值算出存储的位置,如果该位置上没有元素将直接放入,如果有就调用equels() 方法比较。
特点: 无序,没有索引,不可重复,存储和取出的速度都比较快;

TreeSet:

ThreeSet的底层是采用自平衡排序二叉树存储元素,将第一个元素放到最顶端,比它小的放到左孩子,大的放到有孩子,如果存在则舍去。(注意:要使用TreeSet,对象要使用comparable接口,重写compareTo方法.

Map接口:

HashMap:

底层是数组加链表的结构(JDK1.8后是数组加链表或红黑树),用于存储具有键值映射关系的元素,但是键不能重复,键被重复,值会被覆盖。无序。
HashLinkedMap:是HashMap的子类和HashMap一样,只是它是有序的。

TreeMap:

是通过二叉树的原理来保证键的唯一性,这羽TreeSet集合的储存原理一样,因此TreeMap中所有的键是用过某种顺序排列的。
HashTable:是HashMap的线程安全类。HashMap存取元素是速度很慢,所以目前已被HashMap取代。但是HashTable中有一个子类Properties在实际中应用中非常重要,Properties主要用来存储字符串类型的键和值,在实际开发中经常用来存储配置文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值