[重新做人]从头学习JAVA SE——java.util

自己的java基础实在是一言难尽,虽然看过两遍核心技术,但是真的看完就忘,大多数都是做东西时候,从百度和各种博文看来的,觉得实在有必要再看一遍写一点记录,不算博文,更像是笔记,写给自己看的

java.util

其实源码的注释有时候具有比源码更直观的信息

集合

java.util最外层的包就是集合的一些工具,从上到下列在这里:

  • AbstractCollection: 减少需要实现Collection的方法,不可编辑的Collection只需要实现iterator和size,可编辑的还需要实现add和remove
  • AbstractList:不可编辑的列表需要实现get和size,可编辑需要实现set和add,remove等方法,减少实现随机访问的数据源的方法,如果需要实现序列访问的数据源,AbstractSequentialList是个更好的选择
  • AbstractMap:不可编辑的Map需要实现entrySet,基于AbstractSet实现一个Set这个set不支持add和remove方法,它的Iterator支持;可编辑的Map需要覆盖put方法,iterator需要添加remove方法
  • AbstractQueue:这个类的实现不允许null元素,最小扩展方法是定义方法offer(不能插入null元素)以及方法peek,poll,size和iterator
  • AbstractSequentialList:这个类与AbstractList相反,实现随机访问的功能get,set和remove基于表的list iterator,默认的实现了序列访问的数据源,例如链表。不可编辑的需要实现hasNext,next,hasPrevious,previous,和index方法;可编辑的需要额外实现set方法和remove方法
  • AbstractSet:通过向AbstractCollection中添加Set接口限制(不允许重复实例)实现,这个类没有重载任何从AbstractCollection来的方法实现,而是额外添加了equals和hashCode方法
  • ArrayDeque:双端队列的可变数组实现,没有容量限制,非线程安全,用作栈的时候比Stack快,用作队列的时候比LinkedList快;
  • ArrayList:List接口的可变数组实现,提供了方法来调整数组的容量,非线程安全,当插入元素数量大于底层的数组容量时,会调用容量增长策略
  • ArrayPrefixHelpers:ForkJoin tasks 来执行Arrays.parallelPrefix 操作
  • Arrays:从1.7之后新引入了ComparableTimSort方法,https://www.jianshu.com/p/bbbbf4577f8e ;DualPivotQuicksort双轴快排,有空可以看下
  • ArraysParallelSortHelpers:暂时跳过
  • Base64:
  • BitSet:
  • Calendar:
  • Collection:
  • ComparableTimSort
  • Comparator
  • Comparators:
  • ConcurrentModificationException:当一个线程在操作集合时,其他线程对集合的操作会发生
  • Currency:货币相关
  • Date:
  • Deque
  • Dictionary
  • DoubleSummaryStatistics:stream辅助类
  • DualPivotQuicksort
  • DuplicateFormatFlagsException:重复格式化标志异常
  • EmptyStackException: 空栈异常
  • Enumeration:枚举接口,已经被Iterator替代
  • EnumMap:
  • EnumSet:
  • EventListener:所有的事件接口必须扩展的
  • EventListenerProxy:
  • EventObject:
  • FormatFlagsConversionMismatchException:
  • Formattable:
  • FormattableFlags
  • Formatter
  • FormatterClosedException
  • GregorianCalender
  • HashMap:key和value都可以为null,无序
  • HashSet:实际上是一个HashMap
  • HashTable:过时了
  • IdentityHashMap:只有k1==k2而不是k1.equals(k2)时,k1,k2才会被视为相同的键
  • IllegalFormatCodePointException:不合法的码点
  • IllegalFormatConversionException:不兼容的转换符
  • IllegalFormatException:不合法的转换格式字符串
  • IllegalFormatFlagsException: 不合法的格式标志
  • IllegalFormatPrecisionException:不合法的精度表示
  • IllegalFormatWidthException:不合法的宽度表示
  • IllformedLocaleException:非标准的BCP 47 tag
  • InputMismatchException:与期待类型不匹配
  • IntSummaryStatistics:
  • InvalidPropertiesFormatException:
  • Iterator:迭代器接口
  • JapaneseImperialCalendar: 日本历实现类
  • JumboEnumSet:
  • LinkedHashMap:维护插入顺序的HashMap或者上次访问的顺序,相同的键重新插入不影响原来键的位置
  • LinkedHashSet
  • LinkedList
  • List
  • ListIterator
  • ListResourceBundle:ResourceBundle的子类
  • Locale
  • LocaleISOData
  • LongSummaryStatistics
  • Map
  • MissingFormatArgumentException:格式字符串指向的参数index不存在
  • MissingFormatWidthException:缺少宽度参数
  • MissingResourceException:resource不存在
  • NavigableMap:提供了一些导航方法
  • NavigableSet
  • NoSuchElementException:请求的元素不存在
  • Objects:对象工具包,包括equal,hash,toString,Null检查等方法
  • Observable:可观察者
  • Observer:观察者
  • Optional:消除Null的工具类java8
  • OptionalDouble
  • OptionalInt
  • OptionalLong
  • PrimitiveIterator:原始类型迭代器,避免装箱和拆箱
  • PriorityQueue:堆
  • PropertyPermission
  • PropertyPermissionColleciton:
  • PropertyResourceBundle
  • Queue
  • Random
  • RandomAccess:
  • RandomAccessSubList
  • RegularEnumSet
  • ResourceBundle
  • Scanner
  • ServiceConfigurationError:加载服务provider时抛出的错误
  • ServiceLoader
  • Set
  • SimpleTimeZone:TimeZone的具体子类
  • SortedMap
  • SortedSet
  • Spliterator:遍历和分割一个数据源的元素,数据源可能是数组,集合,IO Channel,或者一个生成器
  • Spliterators:
  • Stack:基于vector的栈接口
  • StringJoiner:组装
  • StringTokenizer:不建议使用,分割字符串更推荐String.split或者正则表达式
  • SubList:位于AbstractList内
  • TaskQueue:一个Timer的堆,位于Timer.java内
  • Timer:定时器
  • TimerTask: 定时任务
  • TimeZone :时区
  • TimSort
原文地址:https://www.cnblogs.com/zhouyu0-0/p/13539112.html