관리 메뉴

HAMA 블로그

스칼라 강좌 (7) - 컬렉션과 자바 본문

Scala

스칼라 강좌 (7) - 컬렉션과 자바

[하마] 이승현 (wowlsh93@gmail.com) 2016. 6. 26. 13:08

스칼라 컬렉션과 자바 

 
특성
 
* 스칼라 컬렉션에서 배열은 특별하다. 스칼라 배열은 어떤 면에서 자바 배열과 일대일 대응된다. 
 
  즉 Array[Int] 는 자바에서는 int[]  로 표현할 수 있다. 
  다만 스칼라쪽 배열이 훨씬 많은 기능을 제공한다는 점. 
 
  1.  제너릭 할 수 있다.   Array[T] 식으로 만들 수 있다.
  2. Seq[T] 와 호환 가능 
  3. 모든 시퀀스 연산을 지원한다.  (map, filter, reverse 같은..) 

 

* 스칼라는 자바에 비해 변하지 않는 컬렉션을 강조하며, 한 컬렉션에서 새로운 것으로 변환하는 많은 연산 제공

 

* 스칼라 <-->자바 양방향 변환가능 타입 

  Iterator <=> java.util.Iterator
  Iterator <=> java.util.Enumeration
  Iterable <=> java.lang.Iterable
  Iterable <=> java.util.Collection
  mutable.Buffer <=> java.util.List
  mutable.Set <=> java.util.Set
  mutable.Map <=> java.util.Map 
 
 import collection.JavaConversions._  // 변환을 위해서는 이것을 임포트 해야한다. 
 import collection.mutable._
 
val jul : java.util.List[Int] = ArrayBuffer(1,2,3) 
val buf : Seq[Int] = jul 
val m : java.util.Map[String,Int] = HashMap("abc"->1, "hello" -> 2)
 

* 스칼라 --> 자바 단방향 변환 타입 

  Seq => java.util.List
  mutable.Seq => java.util.List
  Set => java.util.Set
  Map => java.util.Map 
 
 자바 타입에서는 변경 가능한 컬렉션과 그렇지 않은 컬렉션을 구분 할 수 없다. 
 만약 collection.imutable.List 를 자바로 변환하면 java.util.List 가 만들어 지고 
 이것에 대해 변경 연산을 시도하면 예외가 발생할 것이다. 
 

 

 

'Scala' 카테고리의 다른 글

스칼라 강좌 (9) - Stack / Queue  (0) 2016.06.26
스칼라 강좌 (8) - ArrayBuffer 와 Vector 그리고 공변성  (0) 2016.06.26
스칼라 강좌 (6) - Map  (0) 2016.06.20
스칼라 강좌 (5) - Set  (0) 2016.06.19
스칼라 강좌 (4) - Tuple  (0) 2016.06.19
Comments