TIL 2022.03.02.수
1. 학습한 내용
2. 알게 된 내용
- 자바에서의 연결리스트 사용 방법
-
선언 및 초기화
LinkedList list = new LinkedList();//타입 미설정 Object로 선언된다. LinkedList<Integer> num = new LinkedList<Integer>();//타입설정 int타입만 사용가능
위와 같이 LinkedList 타입을 선언하면서 초기화시킬 수 있다.
-
데이터 추가
list.add(1, 10);//index 1에 데이터 10 추가
add() 메서드를 이용해 추가 가능하다. (addFirst(), addLast() 등도 있음)
-
데이터 삭제
list.remove(1); //index 1 제거 list.clear(); //모든 값 제거
remove()만 쓰면 0번 인덱스를 제거한다.
removeFirst(), removeLast() 등의 메서드도 있다. -
연결리스트 크기 구하기
System.out.println(list.size()); //list 크기 : 3
size() 메서드를 이용해 연결리스트 길이를 구할 수 있다.
-
가져오기/출력
get(인덱스) 메서드를 이용해 해당 인덱스의 값을 빼올 수 있다.
-
- ArrayList를 이용해 해결하는 방법
더 알아본 결과 이 문제는 ArrayList를 이용해서도 해결이 가능하다.- ArrayList 타입으로 선언한 후 add(인덱스, 값) 메서드를 이용해 같은 방식으로 진행할 수 있다는 것을 알게 되었다.
- 출처 : ArrayList를 이용해 해결하신 분의 코드
- 그러면 LinkedList와 ArrayList의 차이점은 무엇인가?
LinkedList와 ArrayList의 차이점은 아래 사진과 같다.
- ArrayList가 동적으로 동작하긴 하지만 엄연히 ArrayList는 배열이기 때문에 데이터를 삭제하거나 삽입할 때 그만큼 위치를 맞춰주어야 한다.
- 반면 LinkedList는 데이터를 삭제하거나 삽입할 때 가리키고 있는 주소값만 변경해주면 되기 때문에 ArrayList에 비해 상당히 효율적이다.
- 그러나 LinkedList는 ArrayList에 비해 검색 속도가 느린 편이다.
- 출처 : ArrayList와 LinkedList의 차이
3. 느낀 점
평소와 같이 일반 배열로 작성했다가 뭔가 내 의도와 맞지 않게 굴러간다는 것을 깨달았다. 그러다 염치없지만 문제 아래쪽의 분류를 봤는데 (앞으로는 다 풀기 전에 미리 클릭하지 않겠습니다..) 연결리스트 라는.. 힌트를 얻게 되었다. 하지만 나는 자바에서 연결리스트를 어떻게 쓰는지 잘 모르고 있어서 검색을 했다. 여러 좋은 분들 덕분에 그동안 잊고 있었던.. ArrayList와 LinkedList를 다시 알아가게 되어서 감사하다. 다만 내가 문제 분류를 보고나서 잘 풀린거라.. 조금 아쉽긴 하다. 앞으로는 분류는 최대한 보지 않고 정 모르겠거나 마무리할 때 보도록 해야겠다.
Author And Source
이 문제에 관하여(TIL 2022.03.02.수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@godqhrals/TIL-2022.03.02.수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)