Dart Collection 중 하나인 'List'에 대해 살펴보겠습니다.
LIST 선언하기
'List' 또는 타입 추론 자료형인 'var' 또는 'dynamic'으로 변수를 선언한 뒤
값으로 List의 literal인 '[ ]'를 할당해 주면 됩니다.
List list1 = [];
var list2 = [];
dynamic list3 = [];
List에는 'Generic'이란 옵션이 있는데 해당 옵션을 지정하여
List에 할당되는 값의 자료형을 제한할 수 있습니다. '< >'를 사용해 Generic을 지정합니다.
Generic으로 지정된 자료형 외의 값을 추가하는 경우 오류 발생합니다.
List<String> list1 = ['1', '2', '3']; // String 타입의 값만 추가가능
List<int> list2 = [1, 2, 3]; // int 타입의 값만 추가가능
List 원소 접근하기
'List [index]'를 통해 List에 index 번째 요소를 가져올 수 있습니다.
List list = ['apple', 'banana', 'orange'];
print(list[0]); // 'apple' 출력
print(list[1]); // 'banana' 출력
List 원소 추가하기
리스트에 할당된 값 하나하나를 '원소'라고 합니다.
원소를 추가하려면 'add' 또는 'addall' 함수를 이용하면 됩니다.
List<String> list = ['apple', 'banana', 'grape'];
list.add('orange'); // list에 'orange'를 추가합니다.
print(list);
//-->> [apple, banana, grape, orange]
list.addAll(['plum', 'cherry', 'peach']); // list에 'plum', 'cherry', 'peach' 모두 추가합니다.
print(list);
//-->> [apple, banana, grape, orange, plum, cherry, peach]
List 원소 삭제하기
리스트에 원소를 삭제하는 여러 함수들이 있습니다.
- List.remove(value) --> value에 해당하는 원소(여러 개 일시 가장 앞 index 원소)를 삭제합니다.
지워졌다면 true 아니면 false 반환 - List.removeAt(index) --> index번째 인덱스에 해당하는 원소를 삭제합니다.
삭제된 원소를 반환합니다. - List.removeLast() --> 가장 마지막 인덱스의 원소를 삭제합니다.
삭제된 원소를 반환합니다. - List.removeRange(start, end) --> start 인덱스부터 end 인덱스 전까지의 원소들을 삭제합니다.
아무것도 반환하지 않습니다. - List.clear() --> List의 모든 원소를 삭제합니다.
아래 List변수 기준으로 예제 코드를 보여드리겠습니다.
List list = ['apple', 'banana', 'grape', 'orange', 'peach', 'plum', 'cherry'];
print(list.remove('apple')); // 'apple'원소 삭제됨, 삭제되었기에 true 반환됩니다.
print(list.remove('tree')); // 삭제될 'tree'원소 없기때문에 false 반환됩니다.
print(list.removeAt(1)); // index가 1인 'banana' 요소 삭제됨 삭제된 'banana' 출력됩니다.
print(list.removeAt(10)); // !!!index 10번인 요소가 없기에 Error 발생됩니다.
print(list.removeLast()); //마지막요소인 'cherry' 삭제되고 반환됩니다.
list.removeRange(0, 2); //0번부터 2번 인덱스전까지 0,1번 index 요소가 삭제됩니다.
// 'apple', 'banana' 요소가 삭제됩니다.
// 아무것도 반환되지않기때문에 print함수로 출력시 Error 발생합니다.
list.clear(); //모든요소 삭제됩니다.
Properties (속성)
List에서 기본 제공하는 유용한 속성들을 소개합니다.
- List.first --> 첫 번째 요소를 반환합니다.
- List.last --> 마지막 요소를 반환합니다.
- List.isEmpty --> 리스트가 비었는지 여부를 반환합니다. bool 타입 > true / false
- List.isNotEmpty --> 리스트가 안 비었는지 여부를 반환합니다. bool 타입 > true / false
- List.length --> 리스트의 길이 즉 요소의 개수를 반환합니다.
기타 함수(Method)들
List에서 기본 제공하는 유용한 함수들을 조금 더 소개합니다.
- List.toSet() --> List를 Set자료형으로 바꿔줍니다.
Set 타입 반환합니다. - List.sort(sortFunction) --> List 내 원소를 정렬합니다. sortFunction 이 있다면 해당 함수 기준으로 정렬,
없다면 A-Za-z, 0-9 순으로 오름차순 정렬됩니다.
아무것도 반환하지 않고 List자체를 정렬합니다. - List.shuffle() --> List 내 원소를 무작위로 재 정렬합니다.
- List.join(separator) --> List 내 원소들을 separator로 연결한 문자열을 출력합니다.