1. import java.util.HashSet;
  2. import java.util.Set;
  3. public class LogStreamDeduplicator {
  4. /**
  5. * Removes duplicate log streams from a stream of log entries.
  6. * Uses a HashSet for efficient duplicate detection, minimizing memory footprint.
  7. * @param logEntries An iterable of log entries (e.g., List, Stream).
  8. * @return A new iterable containing only unique log streams.
  9. */
  10. public static Iterable<String> deduplicateLogStreams(Iterable<String> logEntries) {
  11. Set<String> seenStreams = new HashSet<>(); // Use a Set for fast duplicate checking
  12. return logEntries.stream()
  13. .filter(stream -> seenStreams.add(stream)) // Add returns false if already present
  14. .map(seenStreams::iterator) // Convert iterator to String
  15. .toList();
  16. }
  17. public static void main(String[] args) {
  18. // Example usage
  19. String[] logData = {"stream1", "stream2", "stream1", "stream3", "stream2", "stream4"};
  20. Iterable<String> logEntries = java.util.Arrays.asList(logData);
  21. Iterable<String> uniqueLogStreams = deduplicateLogStreams(logEntries);
  22. for (String stream : uniqueLogStreams) {
  23. System.out.println(stream);
  24. }
  25. }
  26. }

Add your comment