1_[자료구조]배열
배열
🌺 배열이 필요한 이유
- 같은 종류의 데이터를 효율적으로 관리
- 같은 종류의 데이터를 순차적으로 저장
- 장점 -빠른 접근 가능(인덱스 번호 이용)
- 단덤 -데이터 추가/.삭제 어려움(미리 최대 길이를 지정해야 함)
🌟 In java..
Primitive - ex) int, char,…
Wrapper- null처리에 유용하기도 하고 자바 컬렉션 프레임 웍, 객체화된 형태로의 사용이 필요할 때 유용 - ex)Integer, Character,…
🌟 자바에서 제공되는 배열을 보완하는 패키지 및 클래스
- Arrays
- ArrayList-가변적 크기(하지만 앞뒤 삽입 삭제가 편할뿐, 중간 삽입 삭제는 불편)
- LinkedList-가변적, 중간 삽입 삭제가 용이
🌟 ArrayList, LinkedList 등은 배열로 인한 알고리즘 복잡도가 더 복잡해질 수 있는 상황에서 용이하게 사용될 수 있음
🌟 복습- 다형성
List
위의 경우에는 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
위와 같이 다형성을 적용하지 않고 동일 클래스로 작성해주어도 무방하다
🌟 그리고 뒤에
new ArrayList<>();
부분에서 꺾쇠 부분에 형에 대해서 명시하지 않아도 되는 부분은 JDK 1.7부터 지원되고 있다
🌟 List 인터페이스의 메서드 상기
- add(아이템) : 아이템 추가
- get(인덱스): 해당 인덱스 번호의 아이템 읽기
- size(): 리스트의 크기를 가져오기
- remove(인덱스): 해당 인덱스의 아이템을 삭제