Spring Boot 프로젝트

Spring Boot 프로젝트 (11.04) - CRUD, 람다식

yeosang0508 2024. 11. 5. 00:16

환경세팅

 

-> Gradle - Groovy

내가 작성한 코드 (list)

 for (Todo todo : todos) {
    System.out.print(todo.getId());
    System.out.print(" / ");
    System.out.println(todo.getContent());
}

 

Iterator -> java 컬렉션 프레임워크에서 컬렉션 내의 요소들을 순차적으로 접근되는 인터페이스
Iterator는 List, set, Map과 같은 컬렉션에서 요소들을 반복(iterate)하여 순회하는 데 사용

 

바뀐코드

 todos.forEach(todo -> System.out.printf("%d  /  %s  \n", todo.getId(), todo.getContent()));

 

내가 작성한 코드 (del)

 for (Todo todo : todos) {
    if (todo.getId() == id) {
       todos.remove(todo);
       isFound = true;
       System.out.println(id + "번 할일이 삭제되었습니다.");
       break;
   }
}

바뀐코드

boolean isRemoved = todos.removeIf(todo -> todo.getId() == id);

 

removeIf는 리스트의 요소를 순회하며 주어진 조건 todo.getId() == id을 만족하는 요소를 찾아서 제거

조건을 만족하는 요소가 하나라도 제거되면 true를 반환, 그렇지 않으면 false를 반환 / true인 것은 전부 다 지움

 


 

자바 람다식 -> 메소드를 간결한 함수 식으로 표현

내가 작성한 코드 (modify)

for (Todo todo : todos) {
    if (todo.getId() == id) {
       System.out.println("기존 할일 : " + todo.getContent());
       System.out.print("새 할일 : ");
       String content = sc.nextLine();
       todo.setContent(content);
       System.out.println(id + "번 할일이 수정되었습니다.");
       isFound = true;
       break;

    }
}

바뀐코드

Todo foundTodo = todos.stream()
       .filter(t -> t.getId() == id)
       .findFirst()
       .orElse(null);

 

 


 

  • 하나의 메서드는 하나의 일만
  • 하나의 클래스는 한가지 주제만

-> 하나의 메서드가 너무 크면 별로야
-> 하나의 클래스가 너무 크면 별로야

-> 여러개의 작은 클래스와 작은 메서드로 나눠야함

=============> 리팩토링