반응형
Map이란 개념이 좀 혼동이 온다.
과연 Map은 List인가.. 함수인가?
이 문제를 해결하기 위해서는 CS를 공부해야 하는게 맞는 것 같다.
무튼 지금 내 수준에서는 이해 못하는게 당연하다
그러니 이런게 있구나 하고 넘어가자
toList
1번 주문은 5000원
2번 주문은 12000원
3번 주문은 7000원
이란 데이터가 있는
order Map을 만들었다.
void main(){
//맵 만들기 , 주문
Map order = {
'1' : '5000원',
'2' : '12000원',
'3' : '7000원'
};
//맵의 keys값과 values값을 리스트로 만드는 방법, Map자체를 리스트화 할 수는 없음
print(order); //현재 Map상태
print(order.keys.toList()); //현재 List상태
print(order.values.toList()); //현재 List상태
Map은 다른 List와는 달리 {}을 사용한다. 다른 List는 [] 을 사용한다.
이런 부분 차이가 Map이 리스트인지, 함수인지 헷갈리는 것 같다.
결과값을 보면 print(order)는 {} 안에 값이 나온다.
그 밑에 toList를 단 결과값은 [] 안에 값이 나온다. List라는 이야기이다.
{1: 5000원, 2: 12000원, 3: 7000원} //print(order);
[1, 2, 3] //print(order.keys);
[5000원, 12000원, 7000원] //print(order.values);
entry
entry는 key와 value를 세트로 만들어서 함께 보여주는 기능이다.
final orderdecs= order.entries.map((entry){
final key = order.keys;
final value = order.values;
return "주문번호 $key 는 $value 이다." ;
});
print(orderdecs);
요래 나온다. 아마 value= order.values; => value =order.value로 바꾸면 "주문번호 1는 5000원이다", "주문번호 2는 12000원이다", 주문번호 3는 7000원이다" 로 나올 것인데. 패키지를 안깔아서 아래처럼 나오는 것 같다.
(주문번호 (1, 2, 3) 는 (5000원, 12000원, 7000원) 이다., 주문번호 (1, 2, 3) 는 (5000원, 12000원, 7000원) 이다., 주문번호 (1, 2, 3) 는 (5000원, 12000원, 7000원) 이다.)
asMap
List에 인덱스 값을 함께 보여주는 기능이다.
List <int>number=[
10,
20,
30,
40,
50
];
final order_o = number.asMap();
print(order_o);
List의 index의 값을 함께 보여준다. 하지만 List가 Map의 형태로 변한다. {} 가 추가 되었다.
{0: 10, 1: 20, 2: 30, 3: 40, 4: 50}
반응형