DedupExamples.java

package fr.univtln.bruno.samples.java101.tp3.functional;

import lombok.extern.slf4j.Slf4j;

import java.util.LinkedHashSet;
import java.util.List;

/**
 * Stream-based deduplication examples: utility class with static methods.
 */
@Slf4j
public final class DedupExamples {
  // Prevent instantiation

  /**
   * Private constructor for utility class.
   */
  private DedupExamples() {
  }

  /**
   * Show deduplication using stream distinct(). This is the preferred functional style when you already have a stream-based pipeline.
   *
   * @param withDup list containing duplicated elements
   */
  public static void dedupWithStreamDistinct(List<String> withDup) {
    log.info("[functional] Unique (Stream.distinct): {}", withDup.stream().distinct().toList());
  }

  /**
   * Show collecting into a LinkedHashSet via stream then LinkedHashSet constructor.
   *
   * @param withDup list containing duplicated elements
   */
  public static void collectToLinkedHashSet(List<String> withDup) {
    var ordered = new LinkedHashSet<>(withDup.stream().distinct().toList());
    log.info("[functional] Collected LinkedHashSet (from stream): {}", ordered);
  }
}