java-tutorial

12) Lambdas & Streams

Goal

Write cleaner collection transformations and understand functional-style Java.

Lambdas

List<String> names = List.of("sam", "li", "asha");
names.forEach(n -> System.out.println(n.toUpperCase()));

Streams

List<String> names = List.of("sam", "li", "asha");
List<String> upper = names.stream()
        .map(String::toUpperCase)
        .sorted()
        .toList();

Filtering and reducing

int sum = List.of(1, 2, 3, 4).stream()
        .filter(n -> n % 2 == 0)
        .mapToInt(n -> n)
        .sum();

Exercises

  1. Given a list of words, return only those with length >= 5 (uppercase).
  2. Compute the average of numbers using streams.
  3. Group words by first letter using Collectors.groupingBy.

Table of contents

  1. Getting Started: Install, run, and your first program
  2. Java Basics: types, variables, operators, formatting
  3. Control Flow: if/switch/loops
  4. Methods: parameters, return values, overloading
  5. OOP: classes, objects, encapsulation
  6. Inheritance & Polymorphism (and when not to use them)
  7. Interfaces, abstract classes, and design basics
  8. Exceptions and error handling
  9. Strings, files, and I/O basics
  10. Collections: List/Set/Map and Big-O intuition
  11. Generics (the useful parts)
  12. Lambdas & Streams
  13. Dates and time (java.time)
  14. Testing with JUnit 5 (basics)
  15. Concurrency: threads, executors, futures
  16. JVM basics: memory, GC, performance habits
  17. Build tools: Maven essentials (recommended)
  18. Next steps: projects to build