как конвертировать коллекцию Set в коллекцию Map

Как конвертировать коллекцию Set в коллекцию Map? В данном примере я конвертировал Set в List, а затем в Map. Но может есть более элегантный способ?

main.dart

void main() {
 Set ara1 = {'H', 'e', 'l', 'o'};
 Map ara2 = ara1.toList().asMap();

 for(var i in ara2.entries) {
  print('${i.key} : ${i.value}');
 }

 print('');

 ara2.forEach((k, v) {
  print('$k : $v');
 });

 print('\n${ara2.runtimeType}');
}

ответ

0 : H
1 : e
2 : l
3 : o

0 : H
1 : e
2 : l
3 : o

ListMapView<dynamic>

Ответы (1 шт):

Автор решения: MiT

Важно понимать что элементы Set'а могут быть как неупорядоченными, так и упорядоченными. Также во втором примере показал как будет более правильнее чем у вас есть сейчас.

void main() {
  Set<String> ara1 = <String>{'H', 'e', 'l', 'o'};

  // 1
  Map<int, String> ara2 = <int, String>{
    for (int i = 0; i < ara1.length; i++) i: ara1.elementAt(i)
  };

  ara2.forEach((k, v) {
    print('$k : $v');
  });

  print('');
  
  // 2
  List<String> ara1Temp = ara1.toList();
  Map<int, String> ara3 = <int, String>{
    for (int i = 0; i < ara1Temp.length; i++) i: ara1Temp[i]
  };

  ara3.forEach((k, v) {
    print('$k : $v');
  });
}
→ Ссылка