일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 비기능적 요구사항
- 스프링 시큐리티 설정
- 소프트웨어의 품격
- 수정자주입
- 도커 이미지 빌드
- 자바 필터
- 스프링 포매터
- java predicate
- ioc컨테이너
- open-session-in-view
- method refetence
- 스프링
- jpa no session
- spring formatter
- IOC
- 기능적 요구사항
- 정적팩토리메서드
- 동적파라미터
- 스프링di
- Atomicity
- 스프링시큐리티
- 생성자주입
- kotlin 리팩터링
- Spring
- 그래프큐엘
- kotlin ::
- 스프링부트 도커
- fetch join
- 토비의 스프링
- jpa lazy
Archives
- Today
- Total
공부기록
ArrayList의 add(T t)와 addAll(Collection<? extends T> collection)을 구현해보자. 본문
Computer Science/자료구조
ArrayList의 add(T t)와 addAll(Collection<? extends T> collection)을 구현해보자.
gracelove91 2019. 10. 9. 14:03반응형
먼저 MyArrayList
는 변수로 int size
와 private T[] array
를 가지고 있다.
클래스의 선언부와 변수.
public class MyArrayList<T> implements List<T> { int size; private T[] array;
size
는 실제 데이터가 저장된 갯수다. 따라서add()
를 호출할 때 값이 하나씩 늘어난다.array.length
와는 차이가 있다.생성자
public MyArrayList() { array = (T[])new Object[10]; size = 0; }
new 연산자를 이용해 객체를 생성하게되면 들어간 데이터가 아무 것도 없을테니
size
는 0으로 초기화해주고,
legnth가 10인Object
타입 배열을 만들어 준 뒤 제네릭타입으로 형변환 해준다.제네릭타입으로 배열을 생성하는 건 안된다.
new T[10] X
내부의array.legnth
는 10이고, 겉으로 드러난MyArrayList.size
는 0이다.add(T t)
@Override public boolean add(T t) { size++; if(size >= this.array.length) { this.array = Arrays.copyOf(this.array, this.size * 2); } array[size-1] = t; //첫번째 데이터를 집어넣었다면 데이터가 위치한 인덱스는 0이고, size는 1이기 떄문에 -1 return true; }
add(T t)
를 호출하게 되면size++
를 해주고size
가array.length
와 같거나 크다면size
에 * 2를 해준 새로운 배열을 만들어서array
가 가리키게 한다. 마지막으로 마지막 데이터가 위치한 그 다음 인덱스에 인자값으로 들어온 객체를 위치시켜준다.addAll(Collection<? extends T> c)
@Override public boolean addAll(Collection<? extends T> c) { //c를 배열로 변환하고, size에 c의 사이즈만큼 += 해주고, this.array에 요소를 추가한다. for(T willAdd : c) { add(willAdd); } return true; }
향상된 for문을 이용해 이미 구현한 add 메소드의 인자값으로 요소들을 넣어준다.
반응형
'Computer Science > 자료구조' 카테고리의 다른 글
[HashTable] JAVA로 간단히 구현해보며 HashTable을 알아보자! (1) | 2020.06.27 |
---|---|
[자료구조] 스택 (0) | 2020.05.22 |
합병정렬 (0) | 2020.01.12 |
기본적인 정렬(선택정렬, 버블정렬, 삽입정렬) (0) | 2020.01.12 |
[한국방송통신대학교 자료구조] 1강 자료구조란? (0) | 2019.10.08 |