static final int BOARD_SIZE = 8;
private List<Piece> whitePawns = new ArrayList<>(BOARD_SIZE);
size
를 제한하는 것이 아니다.capacity
를 의미한다.🤠wheejuni :
ArrayList는 내부적으로 배열을 사용합니다. 말씀하신 것처럼 처음부터 너무 큰 배열을 선언하면 메모리 낭비가 되니까,
필요한 최소한을 만들어두고 계속된 .add() 로 용량이 증대될 필요가 있을 경우 그때 비로소 더 넓은 배열을 생성하고, 이사가는 것입니다.
이때 더 넓은 배열을 생성하고 이사가는 작업 은 컴퓨터의 연산을 다소 필요로 합니다. 자동으로 관리되도록 내버려둬도 괜찮을텐데, 굳이 ArrayList 클래스의 생성자로 capacity를 지정할 수 있게 한 것은, 개발자의 책임과 판단에 따라 큰 용량이 처음부터 필요할 리스트 객체에 대해선 미리 넓은 공간을 확보할 수 있게 하여, 연산력 소모를 아낄 수 있는 개발 방법을 제공하기 위해 그렇게 한 것입니다.