Java集合

        开发中使用集合频率非常高,而且面试的时候被问到的概率也高到离谱,写一个自己理解的集合,加深点印象。

要说集合就要先说集合的最上级迭代器:Iterator ,这个是所有集合的父接口,主要用于遍历输出Collection 集合中的元素,Iterator 对象被称之为迭代器。

Java的集合总共分为,collection和map,这是所有集合最上级接口

实现collection接口的有list,set,queue

        Queue 是 Java 提供的队列实现,有点类似于 List,实际开发中用到的很少,这个制作了解,毕竟也不是写很深的技术探讨;队列接口下还有一个队列子接口Dueue,这个是双向队列,再queue下,一共有2个实现类:PriorityQueue,arrayDueue;如果后面遇到,需要自己去看下这两个实现类

        List是java集合中使用频率最高的集合接口,他是一个有序可重复的且有索引的集合,list有3个实现类LinkedList,arraylist,vector(实际上还有stack,实际开发用的太少了)

频率最高的arraylist:一直认为的是,在业务代码中用的多的类,基本上都是线程不安全的,个别除外,arraylist也不例外,查寻速度很快,线程不安全,他的底层是Object数组,是一个轻量级组件

linkedList:底层是双向链表,查询速度不如arraylist,也是线程不安全,但是在增删上有独特的优势,这个类提供了很多操作头部或者尾部的方法

vector:是arraylist的线程安全版本,重量级组件,因为线程安全,消耗比arraylist多;并发情况下考虑使用

        set是一个无序不可重复的集合,他的实现类有treeSet和hashSet

hashset的底层是用hashmap实现的,跟map差不多的是不允许存放重复值,存放重复值,key会被覆盖,HashSet采用HashCode算法来存取集合中的元素,因此具有比较好的读取和查找性能;因为使用hashcode来存储对象的,所以并不能保证顺序,所以无序,也是线程不安全的

treeSet是一个有序的集合,以前面试的时候做面试题,有一个排序,不知道自己怎么想的,用了个treeset去排序,这么做没什么问题,但是别人想考算法,想想挺搞笑;他的底层是使用treemap实现的,所以本质是个红黑树原理

        map接口下有两个实现类:hashmap和treemap

hashmap是一个无序集合,从名字上看知道他是基于hashcode来实现的,主要是存储键值对,所以键值是不能重复的,但是存储的值,没有限制;因为是基于hashcode存储,他有很高的查询效率,他是一个线程不安全的集合,谈到mapde线程安全性,就看看集合的线程安全类hashtable;在hashmap下还有一个子类,linkedhashmap这个是保留了键的插入顺序;

treemap是一个有序的集合用的很少,不做特别说明

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值