Hello

람다식 연습 예제

by 볼빵빵오춘기

람다식과 람다식 작성방법

https://luckygirljinny.tistory.com/166

 

Java 람다식(Lambda Expression)

Java는 원래 OOP(객체지향프로그링밍)인데 JDK1.8부터 함수형언어(fp)를 추가했다. 람다식(Lambda Expression) 함수(메서드)를 간단한 ‘식(expression)’으로 표현하는 방법이다. 더보기 익명 함수(이름이 없

luckygirljinny.tistory.com

 

람다식 연습 예제

예제1 : 기본적인 람다식

람다식 사용 전 

public class LambdaExample1 {
    public static void main(String[] args) {
        Function<String, String> toUpperCase = new Function<String, String>() {
            @Override
            public String apply(String s) {
                return s.toUpperCase();
            }
        };
        System.out.println(toUpperCase.apply("hello")); // 출력: HELLO
    }
}

 

람다식 사용 후

더보기
public class LambdaExample1 {
    public static void main(String[] args) {
        Function<String, String> toUpperCase = s -> s.toUpperCase();
        System.out.println(toUpperCase.apply("hello")); // 출력: HELLO
    }
}

 

 

예제2 : 숫자 리스트 필터링

람다식 사용 전 

public class LambdaExample2 {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
        List<Integer> evenNumbers = numbers.stream()
                                           .filter(new Predicate<Integer>() {
                                               @Override
                                               public boolean test(Integer n) {
                                                   return n % 2 == 0;
                                               }
                                           })
                                           .collect(Collectors.toList());
        System.out.println(evenNumbers); // 출력: [2, 4, 6]
    }
}

 

람다식 사용 후

더보기
public class LambdaExample2 {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
        List<Integer> evenNumbers = numbers.stream()
                                           .filter(n -> n % 2 == 0)
                                           .collect(Collectors.toList());
        System.out.println(evenNumbers); // 출력: [2, 4, 6]
    }
}

 

예제3 : 문자열 리스트 정렬

람다식 사용 전 

public class LambdaExample3 {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("apple", "banana", "cherry", "date");
        strings.sort(new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return Integer.compare(s1.length(), s2.length());
            }
        });
        System.out.println(strings); // 출력: [date, apple, banana, cherry]
    }
}

 

람다식 사용 후

더보기
public class LambdaExample3 {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("apple", "banana", "cherry", "date");
        strings.sort((s1, s2) -> Integer.compare(s1.length(), s2.length()));
        System.out.println(strings); // 출력: [date, apple, banana, cherry]
    }
}

 

예제4 : 숫자 리스트의 합계

람다식 사용 전 

public class LambdaExample4 {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        int sum = numbers.stream()
                         .reduce(0, new BinaryOperator<Integer>() {
                             @Override
                             public Integer apply(Integer a, Integer b) {
                                 return a + b;
                             }
                         });
        System.out.println(sum); // 출력: 15
    }
}

 

람다식 사용 후

더보기
public class LambdaExample4 {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        int sum = numbers.stream()
                         .reduce(0, (a, b) -> a + b);
        System.out.println(sum); // 출력: 15
    }
}

 

예제5 : 문자열 리스트 연결

람다식 사용 전 

public class LambdaExample5 {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("hello", "world", "java");
        String result = strings.stream()
                               .collect(Collectors.joining(" "));
        System.out.println(result); // 출력: hello world java
    }
}

 

람다식 사용 후

더보기
public class LambdaExample5 {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("hello", "world", "java");
        String result = strings.stream()
                               .collect(Collectors.joining(" "));
        System.out.println(result); // 출력: hello world java
    }
}

 

예제6 : 리스트 요소 제곱

람다식 사용 전 

public class LambdaExample6 {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> squaredNumbers = numbers.stream()
                                              .map(new Function<Integer, Integer>() {
                                                  @Override
                                                  public Integer apply(Integer n) {
                                                      return n * n;
                                                  }
                                              })
                                              .collect(Collectors.toList());
        System.out.println(squaredNumbers); // 출력: [1, 4, 9, 16, 25]
    }
}

 

람다식 사용 후

더보기
public class LambdaExample6 {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> squaredNumbers = numbers.stream()
                                              .map(n -> n * n)
                                              .collect(Collectors.toList());
        System.out.println(squaredNumbers); // 출력: [1, 4, 9, 16, 25]
    }
}

 

예제7 : 사용자 정의 함수형 인터페이스

람다식 사용 전 

@FunctionalInterface
interface GCD {
    int compute(int a, int b);
}

public class LambdaExample7 {
    public static void main(String[] args) {
        GCD gcd = new GCD() {
            @Override
            public int compute(int a, int b) {
                while (b != 0) {
                    int temp = b;
                    b = a % b;
                    a = temp;
                }
                return a;
            }
        };
        System.out.println(gcd.compute(54, 24)); // 출력: 6
    }
}

 

람다식 사용 후

더보기
@FunctionalInterface
interface GCD {
    int compute(int a, int b);
}

public class LambdaExample7 {
    public static void main(String[] args) {
        GCD gcd = (a, b) -> {
            while (b != 0) {
                int temp = b;
                b = a % b;
                a = temp;
            }
            return a;
        };
        System.out.println(gcd.compute(54, 24)); // 출력: 6
    }
}

 

예제8 : 리스트 요소의 길이 합계

람다식 사용 전 

public class LambdaExample8 {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("hello", "world", "java");
        int totalLength = strings.stream()
                                 .mapToInt(new ToIntFunction<String>() {
                                     @Override
                                     public int applyAsInt(String s) {
                                         return s.length();
                                     }
                                 })
                                 .sum();
        System.out.println(totalLength); // 출력: 14
    }
}

 

람다식 사용 후

더보기
public class LambdaExample8 {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("hello", "world", "java");
        int totalLength = strings.stream()
                                 .mapToInt(String::length)
                                 .sum();
        System.out.println(totalLength); // 출력: 14
    }
}

 

예제9 : 사용자 정의 Comparator

람다식 사용 전 

class Person {
    String name;
    int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return name + " (" + age + ")";
    }
}

public class LambdaExample9 {
    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
                new Person("Alice", 30),
                new Person("Bob", 25),
                new Person("Charlie", 35)
        );

        people.sort(new Comparator<Person>() {
            @Override
            public int compare(Person p1, Person p2) {
                return Integer.compare(p1.age, p2.age);
            }
        });
        System.out.println(people); // 출력: [Bob (25), Alice (30), Charlie (35)]
    }
}

 

람다식 사용 후

더보기
class Person {
    String name;
    int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return name + " (" + age + ")";
    }
}

public class LambdaExample9 {
    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
                new Person("Alice", 30),
                new Person("Bob", 25),
                new Person("Charlie", 35)
        );

        people.sort(Comparator.comparingInt(p -> p.age));
        System.out.println(people); // 출력: [Bob (25), Alice (30), Charlie (35)]
    }
}

 

예제10 : 문자열 리스트의 첫 글자 추출

람다식 사용 전 

public class LambdaExample10 {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("hello", "world", "java");
        List<Character> firstChars = strings.stream()
                                            .map(new Function<String, Character>() {
                                                @Override
                                                public Character apply(String s) {
                                                    return s.charAt(0);
                                                }
                                            })
                                            .collect(Collectors.toList());
        System.out.println(firstChars); // 출력: [h, w, j]
    }
}

 

람다식 사용 후

더보기
public class LambdaExample10 {
    public static void main(String[] args) {
        List<String> strings = Arrays.asList("hello", "world", "java");
        List<Character> firstChars = strings.stream()
                                            .map(s -> s.charAt(0))
                                            .collect(Collectors.toList());
        System.out.println(firstChars); // 출력: [h, w, j]
    }
}

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기