728x90
목차
Q1.
지역 내부 클래스에서 외부 클래스 메서드의 지역 변수를 사용할 수 있지만, 그 값을 변경하면 오류가 발생한다.
이때 사용하는 지역 변수는 [ ]변수가 되기 때문이다.
Q2.
내부 클래스 중 클래스 이름 없이 인터페이스나 추상 클래스 자료형에 직접 대입하여 생성하는 클래스를 [ ]라고 한다.
Q3.
자바에서 제공하는 함수형 프로그래밍 방식으로 인터페이스의 메서드를 직접 구현하는 코드를 [ ]이라고 한다.
Q4.
람다식으로 구현할 수 있는 인터페이스는 메서드를 하나만 가져야 한다. 이러한 인터페이스를 [ ]라고 한다.
Q5.
다음과 같이 두 정수를 매개변수로 하는 메서드가 인터페이스에 정의되어 있다. 두 정수의 합을 반환하는 람다식을 구현하고 호출해보자.
package lambda;
public interface Calc {
public int add(int num1, int num2);
}
Q6.
자바에서 자료를 추상화하여 여러 자료형의 자료를 동일하게 처리할 수 있도록 제공하는 클래스를 [ ]이라고 한다.
Q7.
다음과 같이 도서관에 책이 있다.
class Book {
private String name;
private int price;
public Book(String name, int price) {
this.name = name;
this.price = price;
}
}
public class LibraryTest {
public static void main(String[] args) {
List<Book> bookList = new ArrayList<>();
bookList.add(new Book("자바", 25000));
bookList.add(new Book("파이썬", 15000));
bookList.add(new Book("안드로이드", 30000));
}
}
위와 같을 때 스트림을 활용해 다음처럼 책 목록을 출력하세요.
- 모든 책의 가격의 합 - 책의 가격이 20,000원 이상인 책의 이름을 정렬하여 출력 |
정답:
Q1: final
Q2: 익명 내부 클래스
Q3: 람다식
Q4: 함수형 인터페이스
Q5:
public class Q5 {
public static void main(String[] args) {
Calc sum = (s, v) -> s + v;
System.out.println(sum.add(30, 20));
}
}
Q6: 스트림
Q7:
import java.util.ArrayList;
import java.util.List;
class Book {
private String name;
private int price;
public Book(String name, int price) {
this.name = name;
this.price = price;
}
//getter 추가
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
public class LibraryTest {
public static void main(String[] args) {
List<Book> bookList = new ArrayList<>();
bookList.add(new Book("자바", 25000));
bookList.add(new Book("파이썬", 15000));
bookList.add(new Book("안드로이드", 30000));
System.out.println("==모든 책 가격의 합==");
int total = bookList.stream().mapToInt(p -> p.getPrice()).sum();
System.out.println(total);
System.out.println("==20,000원이 넘는 책 이름 정렬==");
bookList.stream().filter(p1 -> p1.getPrice()>=20000).map(p1 -> p1.getName()).sorted().forEach(b1 -> System.out.println(b1));
}
}
300x250