[2021-02-25 목] TIL

노을·2021년 2월 28일
0

TIL

목록 보기
48/81

ArrayList 제한에 대한 오해

static final int BOARD_SIZE = 8;

private List<Piece> whitePawns = new ArrayList<>(BOARD_SIZE);
  • 위 코드의 BOARD_SIZE는 ArrayList의 데이터의 길이인 size를 제한하는 것이 아니다.
  • 데이터를 담을 수 있는 용량 capacity 를 의미한다.

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

미션5 구현

  • 바로 앞뒤 열에 같은 Pawn이 있을 경우 점수가 깎이는 코드를 구현하는데 조금 생각을 많이했다.
  • compare 인터페이스에 대해 학습하여, 체스 유닛별 점수에 따른 오름차순, 내림차순을 구현하였다.

참고

profile
카르페디엠

0개의 댓글