相关文章:
Java 集合框架分析:Set
http://blog.csdn.net/youyou1543724847/article/details/52733723
Java 集合框架分析:LinkedList
http://blog.csdn.net/youyou1543724847/article/details/52734935
Java 集合框架分析:DelayQueue
http://blog.csdn.net/youyou1543724847/article/details/52176504
Java 集合框架分析:ArrayBlockingQueue
http://blog.csdn.net/youyou1543724847/article/details/52174308
Java 集合框架分析:ArrayDeque
http://blog.csdn.net/youyou1543724847/article/details/52170026
Java 集合框架分析:PriorityBlockingQueue
http://blog.csdn.net/youyou1543724847/article/details/52166985
Java 集合框架分析:JAVA Queue源码分析
http://blog.csdn.net/youyou1543724847/article/details/52164895
Java 集合框架分析:关于Set,Map集合中元素判等的方式
http://blog.csdn.net/youyou1543724847/article/details/52733766
Java 集合框架分析:ConcurrentModificationException
http://blog.csdn.net/youyou1543724847/article/details/52733780
Java 集合框架分析:线程安全的集合
http://blog.csdn.net/youyou1543724847/article/details/52734876
Java 集合框架分析:JAVA集合中的一些边边角角的知识
http://blog.csdn.net/youyou1543724847/article/details/52734918

JAVA集合中的一些边边角角的知识

NULL在集合中是否允许

Queue:不允许插入Null值(一个主要原因:Queue的poll方法会返回Queue中的head元素,但是如果队列为空,则返回NULL,这里如果本来队列中含有Null,则会分不清)
Deque:不强制限制,但是不提倡插入NULL
ArryDeque:不允许

LinkedList:允许
ArryList:允许,运行存在多个null

EnumSet:不允许
HashSet:允许
TreeSet:不允许

EnumMap:不允许Null key,可以有NULL value
HashMap:可以有Null的key和value
HashTable:不可以有Null的key和value

排序算法

Java集合上的排序是稳定的排序(JAVA中对对象的排序是采用的问题排序,对非对象元素上的排序,无所谓稳定不稳定,采用的是不稳定算法即快排)
即:
Arrys.sort:使用Dual_priot_quick_sort,不稳定
Collections.sort:使用TimSort算法(一种稳定、可适应性的、抗最坏情况的、可迭代的归并排序),稳定的(同list.sort)(其实就是改进后的归并算法,至少采用了一些策略放在在比较短的时候有比较好的性能,或是元素有一些局部特性时,利用这些特性,来获取较好的性能)

集合上的迭代

Iterator接口

一、和 Enumeration 的区别是:
1.某些Iterators子类可以允许通过Iterator进行删除元素
2.命名更好
二、方法

PS:注意remove、forEachRemaining,这属于Java 8的新特性,属于接口的默认方法
关于remove方法说明:
Removes from the underlying collection the last element returned by this iterator (optional operation). This method can be called only once per call to next(). The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is in progress in any way other than by calling this method.
只能在调用Next方法后,调用一次remove方法,删除的是当前通过next操作返回的元素。

ListIterator

一、和Iterator的区别是:
ListIterator继承与Iterator,相比与Iterator来说,优点是:
1.可以通过listiterator进行双向遍历(list只能向后遍历)
2.另外,通过通过listiterator进行修改list
3.listiterator的游标不指向元素,而是指向元素前后之间的空隙,如:

PS:一个有N个元素的list,有N+1个可能的游标位置。

二、方法

集合上的序列化

集合上的迭代和序列化其实都是和具体的集合密切相关的。对于集合来说,虽然Collection接口定义了iterator方法,但是真正的迭代的实现都是通过具体集合对象中定义的内部私有iterator的子类来完成的。意思就是只有具体的集合对象才知道如何迭代。
同理,集合的序列化也是这样的,只有具体的集合对象才知道如何序列化里面的元素,但是和迭代不同的是,底层接口并没有继承Serializable接口,而是具体的集合对象才继承了Serializable接口。

Java 集合框架分析:JAVA集合中的一些边边角角的知识相关推荐

  1. Java 集合框架分析:线程安全的集合

    相关文章: Java 集合框架分析:Set http://blog.csdn.net/youyou1543724847/article/details/52733723 Java 集合框架分析:Lin ...

  2. java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类...

    本文关键词: java集合框架  框架设计理念  容器 继承层级结构 继承图 集合框架中的抽象类  主要的实现类 实现类特性   集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...

  3. java集合课程,I学霸官方免费课程三十三:Java集合框架之Map集合

    I学霸官方免费教程三十三:Java集合框架之Map集合 Map接口 Map集合采用键值对(key-value)的方式存储数据,其中键不可以重复.值可以重复. 常用类有HashMap.TreeMap和P ...

  4. 【Java源码分析】集合框架-Collections工具类-Arrays工具类

    集合框架Collection 和Collections和Arrays工具类 一开始总是搞不清楚Collection和Collections的区别,不过看下代码应该很清楚,一个是接口,一个是工具类 Co ...

  5. Java集合框架之 Java HashMap 源码解析

    继上一篇文章Java集合框架综述后,今天正式开始分析具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 签名(signature) public class HashMap<K,V> ...

  6. 史上最全的集合框架讲解 ----- Java 集合框架(3)---- Map 相关类最全解析

    引言 好了,步入正题,上篇文章Java 集合框架(2)---- List 相关类解析中我们一起看了一下 List 接口的相关具体类(ArrayList.LinkedList-.),这篇开始我们开始探索 ...

  7. (Java集合框架)Map集合

    Map集合 概述 现实生活中,常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对象 ...

  8. java集合框架介绍_Java集合框架介绍

    Java集合框架介绍 发布时间:2020-06-26 17:00:14 来源:亿速云 阅读:85 作者:Leah 这篇文章将为大家详细讲解有关Java集合框架介绍,文章内容质量较高,因此小编分享给大家 ...

  9. java集合框架类_Java集合框架总结—超详细-适合面试

    Set和List接口是Collection接口派生的两个子接口,Queue是Java提供的队列实现,类似于List. Map实现类用于保存具有映射关系的数据(key-value). 2.Set.Lis ...

最新文章

  1. 更改android AVD模拟器创建路径位置的方法
  2. Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
  3. ubuntu中设置mysql的字符集
  4. POPUP_TO_CONFIRM_WITH_MESSAGE
  5. python快速获取多个列表的所有组合形式
  6. gNB,ng-eNB和NR
  7. 计算机英语的语言特点及教学,计算机英语的语言特点及教学.doc
  8. python的read函数调用报错_从零开始学Python(七):文件存储I/O流和异常捕捉
  9. [OS] 死锁相关知识点以及银行家算法详解
  10. 专访McAfee“M双侠” 感受McAfee云安全自信
  11. ELMAH--Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components 77 out of 90 rated th
  12. 【Spring第六篇】注解:Annotation
  13. mysql 保存时间报错_JPA在MySQL数据库中保存错误的日期
  14. 理解与学习linux 文件系统的目录结构
  15. kubernetes 集群管理平台
  16. 8.12. 安装 Elasticsearch 2.3
  17. FlashCC导入使用greensock(TweenLite)包
  18. 英特尔核显无法为此计算机,win10intel显卡驱动装不上怎么办_Win10系统无法安装intel显卡驱动如何解决...
  19. python xy 3_python(3):文件操作/os库
  20. 循环彩灯c语言程序,PLC彩灯实例,一个简单的顺序控制

热门文章

  1. 癸酉本石头记后二十八回
  2. 成功就是日复一日那一点点小小努力的积累
  3. 2017JAVA秋招总结
  4. Java随笔-String有多长?
  5. android 权威编程指南 笔记 2018-09-01
  6. 泪目,不枉费挑灯夜战两个月,终于拿到offer了,集合 +Spring+JVM+ 并发 +Redis 总结
  7. linux 卸载nexus,CentOS7安装Nexus
  8. NLP中的数据增强:UDA、EDA
  9. 广州哪个大学大一计算机学ps,紧急!广东12所“野鸡大学”名单曝光!广州人千万别上当!...
  10. 前端如何拥有自己的服务器