- 리스트(List), 세트(Set), 맵(Map)
List<String> blackPink = ['로제','지수','리사','제니'];
print(blackPink);
print(blackPink.asMap());
print(blackPink.toSet());
Map blackPinkMap = blackPink.asMap();
// Set to List
print(blackPinkMap.keys.toList());
print(blackPinkMap.values.toList());
// List to Set
Set blackPinkSet = Set.from(blackPink);
// result
[로제, 지수, 리사, 제니]
{0: 로제, 1: 지수, 2: 리사, 3: 제니}
{로제, 지수, 리사, 제니}
[0, 1, 2, 3]
[로제, 지수, 리사, 제니]
- map을 쓰면 새로운 리스트가 만들어진 후 반환된다.
List<String> blackPink = ['로제','지수','리사','제니'];
final newBlackPink = blackPink.map((x){
return '블랙핑크 $x';
});
print(blackPink);
print(newBlackPink.toList());
//arrow func
final newBlackPink2 = blackPink.map((x) => '블랙핑크 $x');
print(newBlackPink == newBlackPink2); // false
- split으로 각 글자를 쪼갤 수 있다.
final parsed = number.split('').map((x) => '$x.jpg').toList();
print(parsed); // [1.jpg, 3.jpg, 5.jpg, 7.jpg, 9.jpg]
- map을 맵핑하게되면, key value 값을 같이 써주어야한다.
Map<String, String> harryPotter = {
'Harray' : '해리 포터',
'Ron': '론 위즐리',
'Hermione' : '헤르미온느 그레인저'
};
final result = harryPotter.map(
(key,value) => MapEntry(
'key: $key',
'value: $value',
),
);
print(result);
- Set 사용예시
Set blackPinkSet = {
'로제',
'지수',
'제니',
'리사',
};
final newSet = blackPinkSet.map((x) => '블랙핑크 $x').toSet();
print(newSet);
- Where은 새 리스트로 받아오며, 원래리스트는 변경되지않는다.
List<Map<String, String>> people = [
{
'name': '로제',
'group' : '블랙핑크',
},
{
'name': 'RM',
'group' : 'BTS',
}
];
print(people);
final blackPink = people.where((x) => x['group'] == '블랙핑크');
print(blackPink);
- reduce()
List<int> numbers = [
1,
3,
5,
7,
9
];
final result = numbers.reduce((prev,next){
print('total : ${prev + next}');
return prev + next;
});
print(result);
total : 4
total : 9
total : 16
total : 25
25
- reduce()는 실행하는 리스트의 멤버들의 타입과 리턴 타입이 같아야한다.
- 위 reduce()의 단점을 보완한 것이 fold이다. fold는 리턴 타입을 명시해야한다.(+처음 시작할 첫번째 값을 명시한다.)
List<String> words = [
'안녕하세요 ',
'저는 ',
'쩡이에요.',
];
final sentence = words.reduce((prev,next) => prev + next);
print(sentence); //안녕하세요 저는 쩡이에요.
List<int> numbers = [1, 3, 5, 7, 9];
final sum = numbers.fold<int>(0, (prev, next) => prev + next);
print(sum);
- 또다른 fold 사용 예
void main() {
List<String> words = [
'안녕하세요 ',
'저는 ',
'쩡이에요.',
];
final count = words.fold<int>(0, (prev, next) => prev + next.length);
print(count); //14
- cascading operator (...) ; 이를 사용하면 새로운 리스트 생성
List<int> even = [
2,
4,
6,
8,
];
List<int> odd = [
1,
3,
5,
7,
];
print([...even,...odd]); //[2, 4, 6, 8, 1, 3, 5, 7]
- toString()
void main() {
final List<Map<String, String>> people = [
{
'name': '지수',
'group': '블랙핑크',
},
{
'name': '로제',
'group': '블랙핑크'
},
{
'name': 'RM',
'group': 'BTS',
}
];
final parsedPeople = people.map(
(x) => Person(
name: x['name']!, // ! 값이 존재함을 명시
group: x['group']!,
),
).toList();
print(parsedPeople);
}
class Person {
final String name;
final String group;
Person({
required this.name,
required this.group,
});
@override
String toString() {
return 'Person(name: $name, group: $group)';
}
}
[Person(name: 지수, group: 블랙핑크), Person(name: 로제, group: 블랙핑크), Person(name: RM, group: BTS)]
'Flutter' 카테고리의 다른 글
[Flutter] row and column (0) | 2023.09.22 |
---|---|
[Flutter] Splash Screen (0) | 2023.09.22 |
[Dart] Dart 비동기 프로그래밍 (Async Programming) (0) | 2023.09.20 |
[Dart] Dart 객체지향 프로그래밍 (Object Oriented Programming) (0) | 2023.09.18 |
[Dart] Dart 기본 문법 (0) | 2023.09.13 |