• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

퀴즈 10 질문

23.01.18 16:24 작성 조회수 177

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

안금장님의 프로필

안금장

질문자

2023.01.19

친절한 답변 감사합니다~