일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- play 강좌
- 블록체인
- 하이퍼레저 패브릭
- 그라파나
- 파이썬 머신러닝
- Golang
- 주키퍼
- 플레이프레임워크
- 스칼라
- CORDA
- 하이브리드앱
- akka 강좌
- 파이썬 동시성
- 안드로이드 웹뷰
- Akka
- 스위프트
- 엔터프라이즈 블록체인
- 스칼라 강좌
- Hyperledger fabric gossip protocol
- Play2 로 웹 개발
- 파이썬 데이터분석
- 스칼라 동시성
- 파이썬
- hyperledger fabric
- play2 강좌
- 이더리움
- Adapter 패턴
- 파이썬 강좌
- Play2
- Actor
- Today
- Total
HAMA 블로그
스칼라 강좌 (6) - Map 본문
Map
* Map 은 변경 가능한 것 (mutable.Map) 과 변경 불가능한 것 (immutable.Map) 모두를 제공합니다.
import scala.collection.mutable.Map
예를들어 put 이라든지 remove 메소드는 immutable.Map 에서는 사용 불가.
* Map 을 위한 기반 트레이트가 있고 이를 상속한 변경 가능 집합, 변경 불가능 집합을 위한 2가지 트레이트가 있다. ( Set 과 비슷)
val m = Map[Int,String]() // 다른것들과 마찬가지로 팩토리 메소드를 이용해 만들 수 있다.
// 튜플로 이루어진 List 를 이용
val myList = List("England" -> "London", "Germany" -> "Berlin")
// List 에 요소들이 Tuple 로
val myMap = myList.groupBy(e => e._1).map(e => (e._1, e._2(0)._2))
val betterConversion = Map(myList:_*)
val scala28Map = myList.toMap // scala 2.8 version 에선 이렇게도 가능
// map 메소드를 이용
val myList = List("England" , "London", "Germany" , "Berlin")
val map: Map[String,Int] = myList.map{ s => (s,s.length) }.toMap
추가
val m = mutable.Map[Int,String]()
m(0) = "zero" //기존에 0 의 key 가 있을 경우 대체됩니다. ( mutable.Map 일 경우만 )
자신을 변경하는게 아니라 변경된 맵을 새로운 m 에 재 할당하는 방식이 되니까요.
immutable 맵일 경우는
val m2 = m + (3 -> "three") 이런식으로 새로 생성하며 넣습니다.
put ( mutable.Map 일 경우만 )
키 2 가 이미 있다면 그에 해당하는 값을 가져오고 , 없으면 "three" 를 추가.
m.retain((k,v) => k < 2) // key 가 2 보다 작은 요소들만 남겨두고 나머지 제거
스스로는 변화되지 않는데 , 변환된것을 리턴해준다.
filterKeys ( immutable.Map 도 가능)
val m2 = m.filterKeys(_ > 1) // key 가 1 보다 큰 요소들을 가지고 m2 를 만듬.
mapValues ( immutable.Map 도 가능)
val m2 = m.mapValues(_ * 5) // 모든 value 에 * 5 를 한 요소를 가지고 m2 를 만듬
변경
transform ( mutable.Map 일 경우만 )
m.transform( (k,v) => v * 5 ) // 모든 value 에 * 5 를 한 요소를 가지고 m2 를 만듬
위의 mapValues 와 다른점은 transform 은 스스로도 변경된다는 점이다.
Map -> mutable.Map 으로 변경
val myImmutableMap = collection.immutable.Map(1->"one",2->"two") val myMutableMap = collection.mutable.Map() ++ myImmutableMap
'Scala' 카테고리의 다른 글
스칼라 강좌 (8) - ArrayBuffer 와 Vector 그리고 공변성 (0) | 2016.06.26 |
---|---|
스칼라 강좌 (7) - 컬렉션과 자바 (0) | 2016.06.26 |
스칼라 강좌 (5) - Set (0) | 2016.06.19 |
스칼라 강좌 (4) - Tuple (0) | 2016.06.19 |
스칼라 강좌 (3) - List (0) | 2016.06.15 |