Java 64(람다, 메소드 반환형, 제네릭)

Kang.__.Mingu·2024년 5월 18일
0

Java

목록 보기
66/108

메소드의 반환형 또는 매개변수에 자료형으로 제네릭을 사용한 클래스(인터페이스)를 작성할 경우 메소드 반환형 앞에 사용할 제네릭을 생성하여 메소드 작성

  • 함수형 인터페이스에서 사용
public static <T> void 메소드명(매개변수<T> a, 매개변수<T> b){
	for(T t : a){
    	b.메소드(t);
    }
}

Person

public class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Predicate;


public class PersonApp {
    // 메소드의 반환형 또는 매개변수에 자료형으로 제네릭을 사용한 클래스(인터페이스)를 작성할 경우 메소드 반환형
    // 앞에 사용할 제네릭을 생성하여 메소드 작성
    public static <T> void forEach(List<T> list, Consumer<T> c) {
        for(T t : list) {
            c.accept(t);
        }
        System.out.println();
    }

    public static <T> List<T> fillter(List<T> list, Predicate<T> predicate) {
        // List 객체를 반환
        List<T> result = new ArrayList<>();

        for(T t : list) {
            // 조건을 boolean(test)메소드로 호출하고 personList 안에 있는 배열 하나씩 검사
            if(predicate.test(t)) {
                result.add(t);
            }
        }
        return result;
    }


    public static void main(String[] args) {
        forEach(Arrays.asList("홍길동", "임꺽정", "전우치"), str -> System.out.print(str + " "));
        // List.of(E... element): 매개변수로 전달받은 0개 이상의 객체가 요소값으로 저장된
        // List 객체를 반환하는 정적메소드
        forEach(List.of("홍길동", "임꺽정", "전우치"), str -> System.out.print(str + " "));
        System.out.println("=========================================");

        List<Person> personList = new ArrayList<>();
        personList.add(new Person("홍길동", 50));
        personList.add(new Person("임꺽정", 29));
        personList.add(new Person("전우치", 35));
        System.out.println(personList);
        System.out.println("=========================================");

        List<Person> thirtyList = fillter(personList, person -> person.getAge() >= 30);
        System.out.println(thirtyList);
        System.out.println("=========================================");
    }
}
profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글