What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Java stream gatherers let you add intermediate transformations when operations such as map and filter are not enough—for example, to group adjacent elements, accumulate one result, emit running totals, or map elements with bounded concurrency. Oracle documents the built-in Gatherers class as available since Java 24, so compile examples against the JDK version you actually use.

What is a stream gatherer?

A gatherer is an intermediate stream transformation: it consumes input elements, may maintain operation state, and produces output elements for the next stage of a stream pipeline. Oracle’s Java SE 24 API represents those roles with the type parameters Gatherer<T,A,R>: T is the input element type, A is the potentially mutable state type, and R is the output element type. See Oracle’s Gatherer API.

Use the built-in helpers when their output shape matches the job: windows for groups, fold for at most one accumulated result, scan for every cumulative result, and mapConcurrent for bounded concurrent mapping. A custom gatherer is the extension point when those helpers do not express the transformation you need.

Which gatherer fits the task?

Operation Output per input State and order Concurrency and memory
windowFixed Groups of up to the requested size Groups follow encounter order; elements are collected into windows Window storage can be allocated eagerly and contiguously; large windows can use excessive memory
windowSliding Overlapping groups Groups follow encounter order; each new window drops the oldest element and adds the next Window storage can be allocated eagerly and contiguously; large windows can use excessive memory
fold At most one result Accumulates in encounter order; suited to order-dependent operations without a combiner Do not treat it as a parallel reduction
scan One cumulative result for each processed input Each output reflects the accumulated state through that input Accumulated state is carried across inputs
mapConcurrent One mapped result per input Mapper work runs concurrently, but output preserves stream order Concurrency is bounded by the configured maximum; uses virtual threads

How do window gatherers group stream elements?

windowFixed(int windowSize)

Fixed windows partition encountered elements into consecutive groups of the requested size. For example, Oracle’s Java SE 24 API shows eight elements with a window size of three producing [[1, 2, 3], [4, 5, 6], [7, 8]]. The final window may be shorter. Empty input produces no windows, and returned window lists are unmodifiable.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

windowSliding(int windowSize)

Sliding windows overlap: each successive window retains the previous window’s elements except the oldest, then adds the next stream element. If the input has fewer elements than the requested size, the result is one window containing all input elements; empty input produces none. Returned lists are unmodifiable.

Both window methods throw IllegalArgumentException when the size is less than one. Oracle also cautions that windows may be allocated contiguously and eagerly during evaluation, so choosing a very large window can consume excessive memory even for a small stream. Details and examples are in the Java SE 24 Gatherers API.

Rank #2
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

When should you use fold or scan?

fold(Supplier<R> initial, BiFunction<R,T,R> folder)

Use fold when you want to process elements in order and produce at most one accumulated result. It is useful when an operation is order-dependent or no suitable combiner can be implemented. That distinguishes it from a parallel reduction strategy: do not assume fold can split work and combine partial results safely.

scan(Supplier<R> initial, BiFunction<R,T,R> scanner)

Use scan when downstream code needs the progression, not only the final accumulated value. It starts from the supplied initial value, updates the accumulated value for each input, and emits each updated value. For example, a running balance needs the intermediate balances as well as the final one; a fold-style result alone would discard those prefixes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

What does mapConcurrent do?

mapConcurrent(int maxConcurrency, Function<T,R> mapper) applies a mapping function concurrently up to the configured maximum. It uses virtual threads and preserves stream encounter order in its output. Oracle describes it as “An operation which executes a function concurrently with a configured level of max concurrency, using virtual threads.” The API requires maxConcurrency to be at least one.

This is bounded concurrent mapping, not a general performance guarantee: whether it helps depends on the mapper and workload, and no benchmark is established here. If downstream no longer needs elements, cancellation of in-progress tasks is best effort. If a required mapping completes exceptionally, the exception is rethrown as a RuntimeException and remaining tasks are canceled. Consult Oracle’s mapConcurrent documentation for the API contract.

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

When should you write a custom gatherer?

Choose a custom Gatherer<T,A,R> when the desired intermediate transformation is not covered by the built-in window, fold, scan, or concurrent-mapping helpers. Define the input, state, and output types around the transformation, and follow the interface’s contract for implementation details. Because the API version matters, compile the implementation against the JDK you intend to support; the Java SE 24 API pages identify these APIs as available since Java 24.

What Java version do you need?

Oracle’s Java SE 24 API documentation marks Gatherers as available since Java 24. The title-matched InfoWorld tutorial by Matthew Tyson was published June 26, 2024 and demonstrates the feature in its Java 22 preview-era context. Its --enable-preview advice belongs to that historical setup, not to current Java 24 use. Check the documentation and compiler options for your installed JDK rather than copying preview flags from an older tutorial. See the InfoWorld tutorial and Oracle’s Java SE 24 API.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.