해결된 질문
작성
·
227
0
안녕하세요 퀴즈 10 학습중
강의에서는 ArrayList 로 customerList를 만드셨는데
저는 Arrays.asList로 구현을 하려고 해보았습니다.
작동은 잘 되지만 객체를 asList 로 넣으려면 저런식으로 넣는게 맞는건가요?
package chap_10;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class _Quiz_10 {
public static void main(String[] args) {
List<Customer> customerList = new ArrayList<>();
customerList = Arrays.asList(new Customer[]{new Customer("챈들러", 50), new Customer("레이첼", 42), new Customer("모니카", 20), new Customer("벤자민", 18), new Customer("제임스", 5)});
customerList.stream().map(x -> x.age >= 20 ? x.name + " 5000원" : x.name + " 무료").forEach(System.out::println);
}
}
class Customer {
String name;
int age;
public Customer(String name, int age) {
this.name = name;
this.age = age;
}
}
답변 2
1
안녕하세요?
네, 작성하신 방법이 맞습니다. 다만 조금 더 간소하게 할 수 있는 방법이 있는데요. 우선은 customerList 는 null 로 초기화를 해두었다고 가정합니다.
List<Customer> customerList = null; // null 값으로 초기화
먼저 작성하신 방법과 유사한 형태로 코드를 작성해보았습니다. array1 이라는 배열을 일반적인 방법으로 만들고 asList( ) 에 넣었습니다. 가독성을 위해 각 객체마다 줄바꿈을 하였습니다.
// 방법 1 : 일반적인 방법
Customer[] array1 = new Customer[] {
new Customer("챈들러", 50),
new Customer("레이첼", 42),
new Customer("모니카", 20),
new Customer("벤자민", 18),
new Customer("제임스", 5)
};
customerList = Arrays.asList(array1);
이번에는 new Customer[ ] 부분을 생략하고 대신 중괄호 { } 로 감싸는 방법입니다. 몇 글자 더 줄일 수 있네요.
// 방법 2 : new Customer[] 부분 생략
Customer[] array2 = {
new Customer("챈들러", 50),
new Customer("레이첼", 42),
new Customer("모니카", 20),
new Customer("벤자민", 18),
new Customer("제임스", 5)
};
customerList = Arrays.asList(array2);
마지막으로 앞의 코드에서 array2 를 따로 만들어서 처리하지 않고 하나로 합쳐서 바로 집어 넣었습니다. 셋 중에서 가장 간단한 방법입니다.
// 방법 3 : 조금 더 간략하게 줄인 방법
customerList = Arrays.asList(
new Customer("챈들러", 50),
new Customer("레이첼", 42),
new Customer("모니카", 20),
new Customer("벤자민", 18),
new Customer("제임스", 5));
퀴즈는 정말 잘 풀어주셨습니다. 작성하신 코드도 옳은 답이며, 앞에서 소개드린 방법도 함께 익혀두시면 도움되리라 생각합니다.
감사합니다 😊
0