范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Java集合框架最全详解(看这篇就够了)

  Java集合非常的重要,而且还是大厂面试的重灾区,本篇会全面介绍Java集合@mikechenJava集合体系框架
  Java集合类主要由两个根接口Collection和Map派生出来的。
  Collection派生出了三个子接口:
  1)List
  List代表了有序可重复集合,可直接根据元素的索引来访问
  2)Set
  Set代表无序不可重复集合,只能根据元素本身来访问
  3)Queue
  Queue是队列集合
  Map接口派生:
  Map代表的是存储key-value对的集合,可根据元素的key来访问value。
  因此Java集合大致也可分成List、Set、Queue、Map四种接口体系。Java集合List
  List代表了有序可重复集合,可直接根据元素的索引来访问。
  List接口常用的实现类有:ArrayList、LinkedList、Vector。List集合特点集合中的元素允许重复集合中的元素是有顺序的,各元素插入的顺序就是各元素的顺序集合中的元素可以通过索引来访问或者设置ArrayList
  ArrayList是一个动态数组,也是我们最常用的集合,是List类的典型实现。
  它允许任何符合规则的元素插入甚至包括null,每一个ArrayList都有一个初始容量(10),该容量代表了数组的大小。
  随着容器中的元素不断增加,容器的大小也会随着增加,在每次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作。
  所以如果我们明确所插入元素的多少,最好指定一个初始容量值,避免过多的进行扩容操作而浪费时间、效率。
  ArrayList擅长于随机访问,同时ArrayList是非同步的。Vector
  与ArrayList相似,但是Vector是同步的,它的操作与ArrayList几乎一样。LinkedList
  LinkedList是采用双向循环链表实现,LinkedList是List接口的另一个实现,除了可以根据索引访问集合元素外,LinkedList还实现了Deque接口,可以当作双端队列来使用,也就是说,既可以当作"栈"使用,又可以当作队列使用。Java List总结
  1)ArrayList
  优点: 底层数据结构是数组,查询快,增删慢。
  缺点: 线程不安全,效率高
  2)Vector
  优点: 底层数据结构是数组,查询快,增删慢。
  缺点: 线程安全,效率低
  3)LinkedList
  优点: 底层数据结构是链表,查询慢,增删快。
  缺点: 线程不安全,效率高Java集合Set
  Set扩展Collection接口,无序集合,不允许存放重复的元素。
  Set接口常用的实现类有:HashSet、LinkedHashSet、TreeSet
  HashSet
  HashSet是Set集合最常用实现类,是其经典实现。
  HashSet底层数据结构采用哈希表实现,元素无序且唯一,线程不安全,效率高,可以存储null元素,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()方法来保证的,如果没有重写这两个方法,则无法保证元素的唯一性。LinkedHashSet
  底层数据结构采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性。TreeSet
  底层数据结构采用二叉树来实现,元素唯一且已经排好序,唯一性同样需要重写hashCode和equals()方法,二叉树结构保证了元素的有序性。Java Set总结
  1)HashSet底层其实是包装了一个HashMap实现的底层数据结构是数组+链表 + 红黑树具有比较好的读取和查找性能, 可以有null 值通过equals和HashCode来判断两个元素是否相等非线程安全
  2)LinkedHashSet继承HashSet,本质是LinkedHashMap实现底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。有序的,根据HashCode的值来决定元素的存储位置,同时使用一个链表来维护元素的插入顺序非线程安全,可以有null 值
  3)TreeSet是一种排序的Set集合,实现了SortedSet接口,底层是用TreeMap实现的,本质上是一个红黑树原理排序分两种:自然排序(存储元素实现Comparable接口)和定制排序(创建TreeSet时,传递一个自己实现的Comparator对象)正常情况下不能有null值,可以重写Comparable接口 局可以有null值了。Java集合Queue
  队列是数据结构中比较重要的一种类型,它支持 FIFO,尾部添加、头部删除(先进队列的元素先出队列),跟我们生活中的排队类似。PriorityQueue
  PriorityQueue保存队列元素的顺序并不是按照加入的顺序,而是按照队列元素的大小进行排序的。
  PriorityQueue不允许插入null元素。Deque
  Deque接口是Queue接口的子接口,它代表一个双端队列,当程序中需要使用"栈"这种数据结构时,推荐使用ArrayDeque。Java集合Map
  Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。
  1.HashMap
  Map接口基于哈希表的实现,是使用频率最高的用于键值对处理的数据类型。
  它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,特点是访问速度快,遍历顺序不确定,线程不安全,最多允许一个key为null,允许多个value为null。
  可以用 Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap类。2.Hashtable
  Hashtable和HashMap从存储结构和实现来讲有很多相似之处,不同的是它承自Dictionary类,而且是线程安全的,另外Hashtable不允许key和value为null,并发性不如ConcurrentHashMap。
  Hashtable不建议在新代码中使用,不需要线程安全的场合可以用HashMap替换,需要线程安全的场合可以用ConcurrentHashMap替换。3.LinkedHashMap
  LinkedHashMap继承了HashMap,是Map接口的哈希表和链接列表实现,它维护着一个双重链接列表,此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序。4.TreeMap
  TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。5.Map总结
  更多架构技术干货,私信【架构】即可查看我原创的300期+BAT架构技术系列文章与1000+大厂面试题答案合集。

一台可以吸甲醛的空净,舒乐氏KJ1000FA10体验前言上半年刚刚装修完房子,屋内一直存在残留甲醛和胶味,期间也想了好多处理办法,养绿萝,放活性炭统统都试了一遍,甚至买了老罗推荐的FOH除甲醛果冻,最后还是收效甚微。非常感谢亿智蘑菇智能化需求不断强化开拓LED灯杆屏的智能化发展空间在智慧城市智慧交通智慧路灯等观念不断加深的背景下,LED灯杆屏链接产品的需求不断增加,随着经济的快速发展生活消费水平的不断提高,在智慧应用日益普遍的同时,企业实力在不断扩大与经济实好戏即将上演,iQOO8Pro官方图曝光?iQOO8系列新机将于本月17日发布,iQOO手机官方微博再次在其微博带来新机预热,iQOO手机发文称搭载性能顶级配置,实际表现却飘忽不定?上周,关于iQOO8系列的信息都集中在那让你的体脂减下来海尔幻彩C3体脂秤详细体验第一次接触体脂秤是iFit阿里智能体脂秤,当时一个宿舍四个人合买了一个,没事就上去踩一踩,我们四个人的身型完全不同,但是体重却相差不大。体重和视觉上的胖瘦不成正比关系,一个体重比较滴滴开始给司机发红包,单笔最高100元,你们都拿了多少钱?前几天听说滴滴在春运期间会发吉祥红包,想着趁着这几天多拉几单。平常去各种商圈写字楼密集地。虽然这些地方活儿多,但是太堵了。今天跑了一趟发现还有红包拿。滴滴给司机的这波红包补贴有点意扒了扒芬香的拉人头套路,原来他们是这样唬人的近来忽然发现很多的微信的好友开始拉我进入京东内购特惠群XXX,于是没事就研究了一下,这个是什么鬼东西。研究了一下,发现这个是和云集花生日记一样的淘宝客套路,只不过他们做的是淘宝天猫成绩管理系统需求说明书(仅供参考)成绩管理系统需求说明书修订历史记录日期版本说明作者202010121。0未评审的初稿某某某目录1。引言1。1目的1。2文档约定1。3预期的读者和阅读建议1。4产品的范围1。5参考文计算机软件开发文档编写指南二需求规格说明书目录1引言1。1编写目的1。2项目背景1。3定义1。4参考资料2任务概述2。1目标2。2运行环境2。3条件与限制3数据描述3。1静态数据3。2动态数据3。3数据库介绍3。4数据词典人不要脸真的可以天下无敌,面膜女郎喜提阿里女高管微商女郎喜提阿里女高管的事件这个两天成了热点,事情的起因就是从阿里离职的一个小兵出来创业做面膜成了微商,然后为了把面膜卖的好,蹭了阿里的热点和马云的热点,然后夸大说自己是阿里女高管模组电源和非模组区别是什么?电脑电源的工作原理是什么?很多人在组装电脑的时候电源只看功率,只要功率够用就行了,其实电源除了看品牌看功率外还有个非常重要一点的就是这个电源是模组的还是非模组的,它们之间的差别还是挺大的,很多人不理解电源还计算机软件开发文档编写指南十二软件修改报告目录1登记号2登记日期3时间4报告人5子系统名6模块名7软件修改报告的编号8修改9修改描述10批准人11语句类型12程序名13老修订版14新修订版15数据库16数据库修改报告17文
Python入门100题之020生成字母表的3种方法题目生成字母表,并打印出来。输出结果为abcdefghijklmnopqrstuvwxyz视频教程Python入门100题之020生成字母表的3种方法代码1aforiinrangePython入门题046搜索文件名题目在根目录下有任意个文件夹和文件,搜索整个根目录,找出文件名中包含system的文件。python搜索文件视频教程Python入门题046搜索文件名代码1importosdefsPython入门题036判断类型(3种方法)题目判断一个变量的类型,至少用3种方法。python内置函数变量类型视频教程Python入门题036判断类型(3种方法)代码1classTestClasspassv11v21。0vPython入门题040list和tuple的区别题目举例list和tuple的不同,至少说明3处。pythonlisttuple视频教程Python入门题040list和tuple的区别代码1tu(1,2)li1,2trytupPython入门题035按行读取文件(3种方法)题目将文件中数据按行读取出来,放进列表中。视频教程Python入门题035按行读取文件(3种方法)代码frompathlibimportPathfileexamplePath(。示Python入门题042str和repr的区别题目举例说明str和repr的用法,以及相互的关系。python魔法方法魔法函数视频教程Python入门题042str和repr的区别代码1classStudentBasenamePython入门题039强制退出程序(5种方法)题目在一个死循环中,不使用returnbreak的情况下,强制退出程序。python结束进程多线程视频教程Python入门题039退出程序(5种方法)代码1importosimpoPython入门题047dictkey和dict。get(key)的区别题目比较dictkey和dict。get(key)的用法和区别。python字典dict视频教程Python入门题047dictkey和dict。get(key)的区别代码1staPython入门题030生成思维导图题目使用lxml生成Freemind(。mm)格式的思维导图视频教程Python入门题030生成思维导图代码1fromlxmlimportetree创建根节点mapetree。ElPython入门题043removepop和del的区别题目从列表中删除一个元素,分别用removepop和del,了解它们的区别。python列表删除元素视频教程Python入门题043removepop和del的区别代码1lia,bPython入门题051深拷贝(三种方法)题目比较深拷贝和浅拷贝的区别,用不同方法实现深拷贝。pythonjsonpicklecopy视频教程Python入门题051深拷贝(三种方法)代码小明score60一月成绩小明小明