List

0

코틀린

목록 보기
6/11

List 공부하기

val list :List = listOf(1, 2, 3) // Read-Only '읽기 전용'
val list :MutableList = mutableListOf(1, 2, 3) // Write,Read '쓰기/읽기 가능'
val list :ArrayList = arrayListOf(1, 2, 3) // Write,Read '쓰기/읽기 가능'

List

listOf로생성. Immutable.
mutablelist : mutableListOf()로 만듬. Mutable.
arraylist : arrayListOf()로 만듬. Mutable.

listOf :: Immutable, 데이터가 일렬로 배열됨. Array와 유사한 형태

myList.sorted() // 알파벳순 정렬
myList[n] // n번째 항목 반환
myList.first() // 처음 항목 반환
myList.last() // 마지막 항목 반환
myList.contains(something) //something을 포함하는지 확인

ArrayList

arrayListOf()로 생성.Mutable(수정가능하다.)

arrayList.add() // 맨 끝에 항목 추가
arrayList.add(n,something) // n번째에 항목 추가
arrayList.size() // List의 크기 반환
arrayList.indexOf(something) // something 항목의 번호를 반환(0부터 시작)
arrayList.remove(something) // something을 삭제

LinkedList

ArrayList와 비슷하다. 하지만 차이점이 분명하다.

기본적으로 List는 주어진값에 인덱스(위치)가 부여된다.
그냥 list는 immutable. ArrayList와 LinkedList는 Mutable이라는 차이점이있다.

ArrayList는 자료를 넣거나 뺄때 모든 인덱스값을 당기거나 밀어줘야한다.

ArrayList는 자료가 메모리에 저장될때 일렬로 저장된다. 그래서 많은 과정이 필요하다.

ex) 2의 위치에 무언가를 넣는다고 가정하자.
0 1 2 3 4 --> 0 1 - 2 3 4
이때 2가 인덱스 3의위치로
3이 4의위치로
4가 5의위치로 이동하면서 3번의 과정이 필요하다.

하지만 LinkedList는 모든 값들이 하나의 노드로 주어진다.

노드 : 나의 정보와 나의 다음번 정보를 기억하고있다.

그래서 모두의 위치를 바꾸지 않고 앞뒤로의 위치만 바꾸면 가능하다.
ex) 2의 위치에 무언가를 넣는다고 가정하자.
0 1 2 3 4 --> 0 1 - 2 3 4

이때 2가 3의위치로 변경된다.

그렇다면 각각의 장단점은 무엇일까?

ArrayList는 조회시 바로 해당 인덱스의 위치에 가서 결과값을 가져온다.
LinkedList는 조회시 Head(0)부터 차근차근 올라가서 시간이 오래걸린다.

ArrayList는 자료를 추가시 모든 자료에 영향을 끼치게된다.
LinkedList는 각각의 노드가 객체이기때문에 앞뒤로에게만 영향을 끼친다.

즉, ArrayList는 조회에, LinkedList는 추가/제거에 장점을 가지고있다.

profile
러닝커브를 따라서 등반중입니다.

0개의 댓글