배열, ArrayList

조예빈·2024년 7월 1일

Algorithm

목록 보기
3/10

배열

  • 인덱스와 값을 일대일 대응해 관리하는 자료구조
  • 데이터를 저장할 수 있는 모든 공간은 인덱스와 일대일 대응
  • 어떤 위치에 있는 데이터든 한 번에 접근 가능

ArrayList

  • 크기가 동적으로 변하는 배열
  • ArrayList의 생성자의 맥변수로 컬렉션을 넘기면, 매개변수로 넘긴 컬렉션에 담긴 데이터로 초기화 할 수 있음
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

ArrayList<Integer> list2 = new ArrayList<>();
//list2 : [1,2,3]
정의설명
add(n)리스트의 맨 끝에 데이터 추가
get(n)특정 인덱스에 있는 데이터에 접근
remove(n)특정 위치의 데이터 삭제. 데이터를 삭제하는 위치에 따라 데이터를 복사하는 연산이 필요해 시간 복잡도가 O(n)까지 증가할 수 있음

고려할 점

할당할 수 있는 메모리 크기

  • 배열은 표현하려는 데이터가 너무 많으면 배열 할당에 실패함
  • 보통 정수형 1차원 배열은 1000만개, 2차원 배열은 3000*3000을 최대로 생각함

중간에 데이터 삽입이 많은지 확인

  • 배열은 선형 자료구조 -> 중간이나 처음에 데이터를 삽입하면 시간 복잡도가 높아짐

데이터에 자주 접근하거나 읽어야 하는지 확인

  • 배열은 임의 접근을 통해 인덱스에 바로 접근할 수 있어 데이터에 빈번하게 접근하는 경우 효율적임
profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글