utility classes in Java
Java provides several utility classes to make common tasks easier and faster. Here’s a comprehensive list grouped by purpose 👇
🧩 1. Core Collection Utilities
Class Package Purpose
java.util.Collections java.util Utility methods for List, Set, Map (sort, reverse, sync, etc.) java.util.Arrays java.util Utility methods for arrays (sort, copy, fill, compare) java.util.Objects java.util Helps with equals(), hashCode(), requireNonNull() checks java.util.Comparator java.util Factory methods for comparing objects (comparing(), reverseOrder())
🧮 2. Math and Number Utilities
Class Package Purpose
java.lang.Math java.lang Basic math functions — sqrt(), pow(), sin(), etc. java.lang.StrictMath java.lang Same as Math, but strictly follows IEEE floating-point rules java.math.BigDecimal / BigInteger java.math For high-precision calculations (financial, scientific) java.util.Random java.util Random number generation java.util.concurrent.ThreadLocalRandom java.util.concurrent Faster random numbers in multi-threaded environments
🕒 3. Date & Time Utilities
Class Package Purpose
java.time.LocalDate / LocalTime / LocalDateTime java.time Represent date/time without timezone java.time.ZonedDateTime java.time Date/time with timezone java.time.format.DateTimeFormatter java.time.format Format/parse date-time strings java.time.Duration / Period java.time Measure time differences java.util.Calendar / Date java.util Old date API (mostly replaced by java.time)
🧵 4. Concurrency Utilities
Class Package Purpose
java.util.concurrent.Executors java.util.concurrent Factory methods for creating thread pools java.util.concurrent.TimeUnit java.util.concurrent Convert between time units (seconds → millis, etc.) java.util.concurrent.CompletableFuture java.util.concurrent Run async tasks with callbacks java.util.concurrent.ConcurrentHashMap java.util.concurrent Thread-safe map implementation
🗃️ 5. File and I/O Utilities
Class Package Purpose
java.nio.file.Files java.nio.file Read/write/copy/delete files easily java.nio.file.Paths java.nio.file Get Path objects from strings java.io.File java.io Legacy file handling java.util.Scanner java.util Read input from console, file, or string java.util.Properties java.util Read/write .properties config files
🧰 6. Miscellaneous Utility Classes
Class Package Purpose
java.lang.System java.lang System-level utilities — environment, time, I/O streams java.lang.Runtime java.lang Interact with JVM (e.g., memory info, exec commands) java.util.UUID java.util Generate unique identifiers java.util.Optional java.util Avoid null values safely java.util.StringJoiner java.util Join strings with delimiters easily java.util.Base64 java.util Encode/decode Base64 text java.util.ResourceBundle java.util Handle localization (internationalization) java.net.URLEncoder / URLDecoder java.net Encode/decode URLs
💡 7. Java 8+ Stream Utilities
Class Package Purpose
java.util.stream.Collectors java.util.stream Collect data from streams (to list, set, map, etc.) java.util.stream.Stream java.util.stream Functional-style operations (map, filter, reduce) java.util.Spliterators java.util Work with iterator-based data structures efficiently
🧾 8. Reflection & Utility Helpers
Class Package Purpose
java.lang.Class java.lang Represents class metadata at runtime java.lang.reflect.Method / Field / Constructor java.lang.reflect Inspect or modify class structure dynamically java.util.ServiceLoader java.util Load service implementations dynamically (SPI)