void main() {
  List<String> blackPink = ['로제', '지수', '리사', '제니', '제니'];
  
  print(blackPink); // [로제, 지수, 리사, 제니, 제니]
  print(blackPink.asMap()); // {0: 로제, 1: 지수, 2: 리사, 3: 제니, 4: 제니}
  print(blackPink.toSet()); // 중복 제거 : {로제, 지수, 리사, 제니}
  
  Map blackPinkMap = blackPink.asMap();
  
  print(blackPinkMap.values); // iterable 형태 : (로제, 지수, 리사, 제니, 제니)
  print(blackPinkMap.keys); // iterable 형태 : (0, 1, 2, 3, 4)
  
  // iterable -> List : iterable.toList() 
  print(blackPinkMap.values.toList());  // [로제, 지수, 리사, 제니, 제니]
  print(blackPinkMap.keys.toList());   // [0, 1, 2, 3, 4]
}

List < - > Set : Set.from(list), toSet(), toList()

List<String> blackPink = ['로제', '지수', '리사', '제니', '제니'];

// 1. list.toSet()
print(blackPink.toSet()); // 중복 제거 : {로제, 지수, 리사, 제니}

// 2. Set.from(list)
Set blackPinkSet = Set.from(blackPink);
print(blackPinkSet); // {로제, 지수, 리사, 제니}

// 3. Set -> List : toList()
print(blackPinkSet.toList()); // [로제, 지수, 리사, 제니]

map() : 변환


void main() {
  List<String> blackPink = ['로제', '지수', '리사', '제니'];
  
  // 1
  final newBlackPink = blackPink.map((x){ // iterable 형태로 반환됨
    return '블랙핑크 $x';
  });
  
  print(blackPink);
  print(newBlackPink); // iterable -> list : newBlackPink.toList()
  
  // 2
  final newBlackPink2 = blackPink.map((x) => '블랙핑크 $x');
  print(newBlackPink2.toList()); // list
  
  print(blackPink == blackPink); // true
  print(blackPink == newBlackPink); // false
  print(newBlackPink == newBlackPink2); // false
}
// 실행 결과
[로제, 지수, 리사, 제니]
(블랙핑크 로제, 블랙핑크 지수, 블랙핑크 리사, 블랙핑크 제니)
[블랙핑크 로제, 블랙핑크 지수, 블랙핑크 리사, 블랙핑크 제니]

map() 사용 예시 1

	// [1.jpg, 3.jpg, 5.jpg, 7.jpg, 9.jpg]
  String number = '13579';

  final parsed = number.split('').map((x) => '$x.jpg').toList();
  print(parsed); // [1.jpg, 3.jpg, 5.jpg, 7.jpg, 9.jpg]

map() 사용 예시 2 : Map - > Map

void main() {
  Map<String, String> harryPotter = {
    'Harry Potter': '해리포터',
    'Ron Weasley': '론 위즐리',
    'Hermione Granger': '헤르미온느 그레인저',
  };

  final result = harryPotter.map(
    (key, value) => MapEntry(
      'Harry Potter Character $key',
      '해리포터 캐릭터 $value',
    ),
  );
  
  print(harryPotter);
  print(result);
}
// 실행결과 (기존 harryPotter는 변경되지 않고 새로운 맵 생성됨)
{Harry Potter: 해리포터, Ron Weasley: 론 위즐리, Hermione Granger: 헤르미온느 그레인저}
{Harry Potter Character Harry Potter: 해리포터 캐릭터 해리포터, 
Harry Potter Character Ron Weasley: 해리포터 캐릭터 론 위즐리, 
Harry Potter Character Hermione Granger: 해리포터 캐릭터 헤르미온느 그레인저}

map() 사용 예시 3 : Map.keys - > list / Map.values - > list

final keys = harryPotter.keys.map((x) => 'HPC $x');
print(keys); // (HPC Harry Potter, HPC Ron Weasley, HPC Hermione Granger)

final values = harryPotter.values.map((x) => '해리포터 $x').toList();
print(values); // [해리포터 해리포터, 해리포터 론 위즐리, 해리포터 헤르미온느 그레인저]

map() 사용 예시 4 : Set - > Set

Set blackPinkSet = {
    '로제',
    '지수',
    '제니',
    '리사',
  };
  
final newSet = blackPinkSet.map((x) => '블랙핑크 $x').toSet();