[Dart]List 와 Map

Talk·2022년 3월 12일
0

dart공부

목록 보기
1/11

realryankim블로그를 보면서 복습으로 적은 글들

1.List

List<String> isString = []; //List 만들기

List<String> isString2 = ['apple','banana']; //값 넣으면서 생성
isString2.add('파인애플'); //만든 후에 값 넣기
isString2[2].removeAt(2); //파인애플 빼기
print(isString2.length); //List크기 알아내기

List<String> isString3 = new List(3); //최대 넣을 수 있는 값을 3으로 제한
isString3.add("사과"); //Error 크기 제한시 add사용 불가
isString3.removeAt(1);//Error 크기 제한시 removeAt사용 불가
isString3[0] = '사과';

List 심화(forEach, map, reduce, fold)

forEach

List<String> isString2 = ['apple','banana'];
isString2.forEach((value){
print(value) // 사과 바나나
});

map

void main() {
  // Mapping

  List<String> redVelvet = [
    '아이린',
    '슬기',
    '웬디',
    '조이',
    '예리',
  ];

  // Mapping - map
  // map에서는 return 값을 받을 수 있다.
  // newList는 함수 안에서 리턴해준 값들이 각각 값에 '새로운 값'으로 집어넣는다.
  final newList = redVelvet.map((value) {
    return '제 이름은 $value입니다.';
  });
  
  print(
      newList); // (제 이름은 아이린입니다., 제 이름은 슬기입니다., 제 이름은 웬디입니다., 제 이름은 조이입니다., 제 이름은 예리입니다.)

  // redVelvet List는 변경되지않았다.
  print(redVelvet); // [아이린, 슬기, 웬디, 조이, 예리]

  // 정리
  // mapping을 하면 새로운 List를 만들 수 있는데, 원래 있는 List를 기반으로 새로운 List를 제작할 수 있다.
  
  // 주의
  // map을 사용하면 ()가 나오는 이유는 => map 위에 마우스를 올리면 => map은 Iterable을 리턴한다고 되어있다.
  // Iterable을 상속(inheritance)에서 List보다 더 부모인 class라고 보면 된다.
  // Iterable, ()로 나온 것을 List로 바꾸고 싶다면 'toList()'라고 함수를 실행하면 된다. ***
  print(newList.toList()); // [제 이름은 아이린입니다., 제 이름은 슬기입니다., 제 이름은 웬디입니다., 제 이름은 조이입니다., 제 이름은 예리입니다.]
}

Fold

 List<int> numbers = [
    0,
    1,
    2,
    3,
    4,
    5,
  ];
int total = numbers.fold(0, (total, element) {
    // 각각의 값들이 element에 들어가고, looping을 할 때마다 처음에는 0부터 시작하고,
    // total이라는 값은 return되는 값이 다음 looping할 때, total 값이 된다.
    return total + element;
  });

  print(total); // 15

2.Map

Map은 keyvalue로 구성
key는 고유한 값이여야 한다. 이미 있는 key에 값을 넣으면 덮어 씌어진다.

dart
Map dictionary = { //맵 만들기
    'apple': '사과',
    'banana': '바나나',
    'watermelon': '수박',
  };

print(dictionary); //{apple: 사과, banana: 바나나, watermelon: 수박} //원하는 value출력
print(dictionary['apple']); //사과 

dictionary.addAll({  //value 추가
'pineapple' : '파인애플',
'pear' : '배'
});

dictionary.remove('pear'); //value 제거

dictionary['apple'] = '먹어서 없음'; //value 변경

print(dictionary.keys.toList()); // Key 가져오기 
print(dictionary.value.toList()); // value 가져오기 
profile
개발자로 살아가는 중생

0개의 댓글