JDK的工具类概述

JDK的工具类源码目录为 src/share/classes/java/util
一级目录的类文件与一级文件夹结构如下所示

luogw@luogw-mbp util$ tree -L 1
.
├── AbstractCollection.java
├── AbstractList.java
├── AbstractMap.java
├── AbstractQueue.java
├── AbstractSequentialList.java
├── AbstractSet.java
├── ArrayDeque.java
├── ArrayList.java
├── ArrayPrefixHelpers.java
├── Arrays.java
├── ArraysParallelSortHelpers.java
├── Base64.java
├── BitSet.java
├── Calendar.java
├── Collection.java
├── Collections.java
├── ComparableTimSort.java
├── Comparator.java
├── Comparators.java
├── ConcurrentModificationException.java
├── Currency.java
├── CurrencyData.properties
├── Date.java
├── Deque.java
├── Dictionary.java
├── DoubleSummaryStatistics.java
├── DualPivotQuicksort.java
├── DuplicateFormatFlagsException.java
├── EmptyStackException.java
├── EnumMap.java
├── EnumSet.java
├── Enumeration.java
├── EventListener.java
├── EventListenerProxy.java
├── EventObject.java
├── FormatFlagsConversionMismatchException.java
├── Formattable.java
├── FormattableFlags.java
├── Formatter.java
├── FormatterClosedException.java
├── GregorianCalendar.java
├── HashMap.java
├── HashSet.java
├── Hashtable.java
├── IdentityHashMap.java
├── IllegalFormatCodePointException.java
├── IllegalFormatConversionException.java
├── IllegalFormatException.java
├── IllegalFormatFlagsException.java
├── IllegalFormatPrecisionException.java
├── IllegalFormatWidthException.java
├── IllformedLocaleException.java
├── InputMismatchException.java
├── IntSummaryStatistics.java
├── InvalidPropertiesFormatException.java
├── Iterator.java
├── JapaneseImperialCalendar.java
├── JumboEnumSet.java
├── LinkedHashMap.java
├── LinkedHashSet.java
├── LinkedList.java
├── List.java
├── ListIterator.java
├── ListResourceBundle.java
├── Locale.java
├── LocaleISOData.java
├── LongSummaryStatistics.java
├── Map.java
├── MissingFormatArgumentException.java
├── MissingFormatWidthException.java
├── MissingResourceException.java
├── NavigableMap.java
├── NavigableSet.java
├── NoSuchElementException.java
├── Objects.java
├── Observable.java
├── Observer.java
├── Optional.java
├── OptionalDouble.java
├── OptionalInt.java
├── OptionalLong.java
├── PrimitiveIterator.java
├── PriorityQueue.java
├── Properties.java
├── PropertyPermission.java
├── PropertyResourceBundle.java
├── Queue.java
├── Random.java
├── RandomAccess.java
├── RegularEnumSet.java
├── ResourceBundle.java
├── Scanner.java
├── ServiceConfigurationError.java
├── ServiceLoader.java
├── Set.java
├── SimpleTimeZone.java
├── SortedMap.java
├── SortedSet.java
├── Spliterator.java
├── Spliterators.java
├── SplittableRandom.java
├── Stack.java
├── StringJoiner.java
├── StringTokenizer.java
├── TimSort.java
├── TimeZone.java
├── Timer.java
├── TimerTask.java
├── TooManyListenersException.java
├── TreeMap.java
├── TreeSet.java
├── Tripwire.java
├── UUID.java
├── UnknownFormatConversionException.java
├── UnknownFormatFlagsException.java
├── Vector.java
├── WeakHashMap.java
├── concurrent
├── function
├── jar
├── logging
├── package.html
├── prefs
├── regex
├── spi
├── stream
└── zip

9 directories, 118 files

为什么一级目录下的文件那么“杂乱”,个人猜测是历史原因。应该一开始的工具类都是直接放在了该根目录,后续添加的工具类来就有合理的分级(分二级包名)管理

一级(根)目录

该目录下的所有工具类对应的包名是java.util,包括如下的工具类
* 集合框架,遗留的集合类
* 事件模型
* 时间和日期的工具类
* 国际化
* 其它实用工具类(字符串分词器、随机数生成器、和位数组)

concurrent

该目录的工具类对应的包名是java.util.concurrent,其中的类用于编写并发程序的实现工具类

function

该目录的工具类对应的包名是java.util.function,其中的类主要是为lambda表达式和方法引用提供目标类型的函数接口

jar

该目录的工具类对应的包名是java.util.jar,提供用于读取和写入JAR (Java存档)文件格式的类,JAR文件格式基于标准ZIP文件格式,其它JAR包中包含一个可选清单文件。

logging

该目录的工具类对应的包名是java.util.logging,提供JavaTM 2平台的核心日志记录工具的类和接口。

prefs

该目录的工具类对应的包名是java.util.prefs,这个包的类可以让应用程序存储和检索用户和系统首选项以及配置数据。

regex

该目录的工具类对应的包名是java.util.prefs,这个包的提供将字符序列与正则表达式指定的模式匹配的类。

spi

该目录的工具类对应的包名是java.util.spi,,是java中类的服务提供者类。

stream

该目录的工具类对应的包名是java.util.stream,提供支持对流元素的进行函数式操作,例如对集合的map-reduce转换的类。

zip

该目录的工具类对应的包名是java.util.zip,提供用于读写标准ZIP和GZIP文件格式的类。

你可能感兴趣的:(Java,从JDK源码学习编码的基本功)