add를 구현하고, 이를 활용하여 addFirst를 구현해보자.
중간에 넣으면 하나씩 하나씩 뒤로 땡긴다 -> 시간이 많이 걸린다.
Array를 통한 List의 최대 단점이다.
LinkedList배울때 왜 저게 단점인지 극명하게 드러난다.
자 중간에 어떤 값을 넣으려면.. (예를들어 numbers.add(1, 15);)
맨 끝에 있는 data를 한 칸씩 뒤로 빼서 자리를 만들어 주어야 한다.
그러려면 코드를 어떻게 짜줘야 할까?
참고: ArrayList에 내재된 배열 이름을 elementData로 정해줬었다.
elementData[4] = elementData[3];
elementData[3] = elementData[2];
elementData[2] = elementData[1];
이렇게 써줘야 뒤로 한칸씩 밀리지!!
여기서 패턴을 찾아줄 필요가 보인다.
add라는 메소드를 부르려면 구현해줘야 하니까..
일단 ArrayList.java로 가서 add메소드를 구현해주자. 그리고 발견한 규칙에 따라 반복문을 쓰자.
감이 온다 스스로도 잘 했따
자 한칸씩 미는 코드를 작성했으니까, 다음엔 해당 인덱스에 값을 넣겠구나
그럼 for문 밑에 써주면 되지 간단하게~!!>.<
아 챰!!!! 주의할 것... ArrayList에 값 하나 add했지 -> size가 하나 늘어나지..
그래서 size++ 해줘야 함!! 너 왜 이걸 잊니!
나중에 LinkedList와 ArrayList의 장단점을 비교할 때 볼 코드라고 한다. 오케이~
addFirst도 이 개념을 연동해서 구현할 수 있다!!!
오아.. 그래 이미 구현한 메서드를 적극적으로 활용할 수 있지 충분히!!! 당연하지>0<
첫번째 데이터에 값을 저장하는 메서드인 addFirst를 구현해보자.
간단히.. 0번 인덱스에 넣고 나머지는 쭈루룩 밀면 되잖아!! (결국 add와 같은 내용이니 add를 리턴하자는 거!!)
어 그런데 저기 구현해준 클래스에, addFirst부분이 add를 리턴하는데도, addFirst가 add의 윗줄로 갈 수 있다고 하네..??!
왜지...?? 상관 없나..? / 질문 올렸따!!!!
'자료구조 + 알고리즘' 카테고리의 다른 글
[자료구조] ArrayList 구현 - toString사용, 데이터 확인하기 [Java] (0) | 2020.03.17 |
---|---|
[자료구조] ArrayList 구현 - get, 데이터 가져오기 [Java] (0) | 2020.03.16 |
[자료구조] ArrayList 구현 - addLast, 데이터를 끝에 추가 [Java] (0) | 2020.03.11 |
[자료구조] ArrayList 구현 - 객체생성 [Java] (0) | 2020.03.10 |
[자료구조] Array List [JAVA] (0) | 2020.03.09 |