1 minute read

배열

🌺 배열이 필요한 이유

  • 같은 종류의 데이터를 효율적으로 관리
  • 같은 종류의 데이터를 순차적으로 저장
  • 장점 -빠른 접근 가능(인덱스 번호 이용)
  • 단덤 -데이터 추가/.삭제 어려움(미리 최대 길이를 지정해야 함)

🌟 In java..

Primitive - ex) int, char,…

Wrapper- null처리에 유용하기도 하고 자바 컬렉션 프레임 웍, 객체화된 형태로의 사용이 필요할 때 유용 - ex)Integer, Character,…

🌟 자바에서 제공되는 배열을 보완하는 패키지 및 클래스

  • Arrays
  • ArrayList-가변적 크기(하지만 앞뒤 삽입 삭제가 편할뿐, 중간 삽입 삭제는 불편)
  • LinkedList-가변적, 중간 삽입 삭제가 용이

🌟 ArrayList, LinkedList 등은 배열로 인한 알고리즘 복잡도가 더 복잡해질 수 있는 상황에서 용이하게 사용될 수 있음

🌟 복습- 다형성

List list = new ArrayList<>();

위의 경우에는 List 인터페이스(부모)를 이용하여 ArrayList를 정의한 것인데, 이렇게 할 경우, List 인터페이스를 상속받기 때문에 이 인터페이스의 메서드들을 모두 사용할 수 있다

이 경우에는

List<Wrapper> list = new ArrayList<>();
list=  new LinkedList<>();

위와 같이 하나의 변수를 갖고서, 다 사용 후에 해당 인터페이스를 구현하는 클래스로 대체하여 사용할 수도 있다는 장점이 있다

뿐만 아니라 하나의 객체 배열을 만들 때

만약 Person이라는 인터페이스가 구현된 여러 클래스가 있는 상황이라면

Person[] personArr = new Person[3];

personArr[0] = new Student();
personeArr[1] = new Teacher();

위와 같이 하나로 묶어서 제어할 수 있다는 점이 매력적이다

여러 클래스를 하나로 제어하고자 할 경우(상속, 구현이 되어 있다는 전제 하에)에는 다형성이 유용하지만 그렇지 않다면

ArrayList list = new ArrayList<>();

위와 같이 다형성을 적용하지 않고 동일 클래스로 작성해주어도 무방하다

🌟 그리고 뒤에

new ArrayList<>();

부분에서 꺾쇠 부분에 형에 대해서 명시하지 않아도 되는 부분은 JDK 1.7부터 지원되고 있다

🌟 List 인터페이스의 메서드 상기

  • add(아이템) : 아이템 추가
  • get(인덱스): 해당 인덱스 번호의 아이템 읽기
  • size(): 리스트의 크기를 가져오기
  • remove(인덱스): 해당 인덱스의 아이템을 삭제

Updated: