본문 바로가기

카테고리 없음

[Flutter_개발] Dart 컬렉션

오늘은 컬렉션에 대하여 알아보자.

컬렉션이란 여러개의 데이터를 묶어서 다루는 구조를 말한다.

Dart 에서는 대표적으로 List, Set, Map 을 이용한다.

 

먼저 List 이다.

List는 순서가 존재하고 중복을 허용한다는 특징이 있다.

void main() {
  List<String> values = ["사과", "바나나", "오렌지"];
  values.add("귤");
  // [사과, 바나나, 오렌지, 귤]
  values.add("귤");
  // [사과, 바나나, 오렌지, 귤, 귤]
}

[사과, 바나나, 오렌지, 귤, 귤]

이렇게 리스트 안에 사과, 바나나, 오렌지 순으로 values에 값을 부여해주고  add 를 이용해 귤을 두번 추가해주는 작업으로 순서와 중복이 가능하다는 점을 확인할 수 있다. add를 이용해 귤을 추가하듯이 remove라는 함수를 이용해 제거도 가능하고 contains 라는 함수로 포함되어있는지 확인도 가능하다.

 

추가로 인덱스를 활용하여 원하는 값도 불러올 수 있다.

String v1 = values[0];
  print(v1);

사과

이렇게 제일 앞 순서를 0번으로 두고 호출을 하면 이런 값을 확인할 수 있다.

 

다음으로 Set 이다.

Set은 List와 다르게 중복이 불가능하고 순서가 없다는 특징이 있다.

void main() {
  Set<int> numbers = {1, 2, 3};
  print(numbers);
  numbers.add(3);// 이미 3이 포함되어있어 무시됨
  print(numbers);
  numbers.add(4);
  print(numbers);
}

2{1, 2, 3}

{1, 2, 3, 4}

위에 나온 것 처럼 3을 추가하려 했지만 3이 이미 포함되어있어 무시되는 것을 확인할 수 있다.

 

다음으로 Map 이다.

Map은 key와 value의 쌍을 표현한다.

void main() {
  Map<String, int> scores = {"옥윤": 50, "규호": 100, "옥윤": 70};
  print(scores);
}

{옥윤: 70, 규호: 100}

"옥윤"에 값을 두개를 주었지만 하나만 출력되었다. 그걸 통해 key는 중복이 불가능하다는 걸 확인할 수 있다.

void main() {
  Map<String, int> scores = {"옥윤": 100, "규호": 100};
  print(scores);
}

{옥윤: 100, 규호: 100}

반면 value는 중복이 되어도 상관없다는 것을 확인할 수 있다.

void main() {
  Map<String, int> scores = {"옥윤": 70, "규호": 100};
  print(scores);
  print(scores["옥윤"]);
  int value = scores["옥윤"]!;
  print(value);
  scores["규호"] = 50;
  print(scores);
  scores["대성"] = 80;
  print(scores);
}
{옥윤: 70, 규호: 100}
2 70
{옥윤: 70, 규호: 50}

{옥윤: 70, 규호: 50, 대성: 80}

위에 보이 듯이 값을 가지고와 value라는 변수에 담을 수도 있고(뒤에 있는 !는 추후에 nullable에 대해 공부하면서 기록해보자!),

 수정 또한 가능하고 추가 또한 가능하다.

 

 

오늘 알아본 컬렉션 부분에 관해서는 이해가 크게 어렵지는 않았다. 문장을 완벽히 구현하는데 시간이 걸리더라도 지금당장은 크게 어떤 특징과 차이점을 가지고 있는지 확실하게 알아두어야 나중에 도움이 될 것 같다. TIL 작성 이후에도 혼자서 특징에 따라 작성해보고 결과를 도출해보는 시간을 가져야 할듯하다.