앱 만들기 프로젝트/Dart

Dart - 2.5 Sets

지나가는물리학부생 2023. 3. 7. 23:46
반응형

Set는 List와 비슷하게 생겼지만 매우 다르다.

 

일단 선언하는 방법은 아래와 같다.

  var numbers = {1, 2, 3, 4};
  Set<int> numbers1 = {1, 2, 3, 4};

'중괄호'로 생성했음을 주의하자.

대괄호로 생성하면 List, 중괄호로 생성하면 Set이다.

물론, Set<int>이런 식으로 할 수도 있다.

 

List와 Set의 차이점은 '구성요소들이 unique하다'는 것이다.

아래 코드블럭 처럼...

  numbers.add(1);
  numbers.add(1);
  numbers.add(1);
  numbers.add(1);
  numbers.add(1);
  print(numbers);

Set인 numbers에 1을 여러번 추가해도, 출력하면 1은 한번밖에 나오지 않는다.

그러니까, '구성요소들이 딱 한개만 있어야 할 경우'에 Set을 사용한다.

 

*주의 할 것*

var OMG = {1, [1,2], [1,2]};

위 코드블럭 처럼 변수를 만들고 출력하면 어떻게 될까?

{1, [1,2]} 이렇게 나올까?

정답은 그렇지 않다. {1, [1, 2], [1, 2]} <- 이렇게 나온다.

왜 그럴까?

dart 공식 문서에 따르면...  https://api.dart.dev/be/180360/dart-core/List/operator_equals.html

Lists are, by default, only equal to themselves. Even if other is also a list, the equality comparison does not compare the elements of the two lists.

그러니까, 핵심만 말하자면 두 번째 [1,2] 와 세 번째 [1,2] 는 다르다는 것이다.

즉, key에다가 list는 좀 지양해야 될 것 같다. value가 list라면 어차피 key로 value를 가져오는 것이 일반적이니까 상관 없을것 같은데...

물론, 구글링 해보면 패키지를 이용해서 list가 동일한건지 아닌지 비교하는 방법이 있기는 하다.

조금 더 자세한건, 'Dart - 2.1 Lists' 게시물을 참고하자.

https://want-to-work-life-balance.tistory.com/entry/Dart-21-Lists

 

Dart - 2.1 Lists

var numbers = [1,2,3,4]; List numbers2 = [1,2,3,4]; 위의 두 방법 모두 'int'의 list를 만드는 방법이다. 이때, 끝을 쉼표로 마무리하면 아래와 같이 자동으로 해준다. var numbers = [ 1, 2, 3, 4, ]; List numbers2 = [ 1, 2, 3

want-to-work-life-balance.tistory.com

 

반응형

'앱 만들기 프로젝트 > Dart' 카테고리의 다른 글

Dart - 3.1 Named Parameters  (1) 2024.10.14
Dart - 3.0 Defining a Function  (0) 2024.10.14
Dart - 2.4 Maps  (0) 2023.03.07
Dart - 2.3 Collection For  (0) 2023.03.07
Dart - 2.2 String Interpolation  (0) 2023.03.07