Scala与Java集合互转摘要
歡迎支持筆者新作:《深入理解Kafka:核心設計與實踐原理》和《RabbitMQ實戰指南》,同時歡迎關注筆者的微信公眾號:朱小廝的博客。
歡迎跳轉到本文的原文鏈接:https://honeypps.com/java/scala-and-java-collection-exchanges/
在上一篇文章《再看Kafka Lag》中筆者提及了Scala與Java集合互轉的內容,但是并未有詳述,本文對此做一個補充說明,方便在使用的時候可以隨時翻閱。
對于集合而言,Scala從2.8.1開始引入scala.collection.JavaConverters用于Scala與Java集合的互轉。在scala代碼中如果需要集合轉換,首先引入scala.collection.JavaConverters._,進而顯示調用asJava或者asScala方法完成轉型。與此雷同的scala.collection.JavaConversions已被標注為@Deprecated(since 2.12.0),JavaConversions可以做到隱式轉換,即不需要asJava或者asScala的調用,但是這樣可能會對閱讀造成障礙,可能會讓人難以知曉什么變成了什么。筆者這里羅列出JavaConverters支持的互轉類型(內容來源于源碼注釋)。
在所有情形下,從原始類型轉變到對側類型之后再轉變回來的話會是同一個對象,舉例
import scala.collection.JavaConverters._val source = new scala.collection.mutable.ListBuffer[Int] val target: java.util.List[Int] = source.asJava val other: scala.collection.mutable.Buffer[Int] = target.asScala assert(source eq other)另外,轉換方法也有其描述性的名稱可供顯示調用,舉例如下:
scala> val vs = java.util.Arrays.asList("hi", "bye") vs: java.util.List[String] = [hi, bye]scala> val ss = asScalaIterator(vs.iterator) ss: Iterator[String] = non-empty iteratorscala> .toList res0: List[String] = List(hi, bye)scala> val ss = asScalaBuffer(vs) ss: scala.collection.mutable.Buffer[String] = Buffer(hi, bye)歡迎跳轉到本文的原文鏈接:https://honeypps.com/java/scala-and-java-collection-exchanges/
歡迎支持筆者新作:《深入理解Kafka:核心設計與實踐原理》和《RabbitMQ實戰指南》,同時歡迎關注筆者的微信公眾號:朱小廝的博客。
總結
以上是生活随笔為你收集整理的Scala与Java集合互转摘要的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 再看Kafka Lag
- 下一篇: Kafka消息格式中的变长字段(Vari