Scala与Java集合互转摘要
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。
 
 歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/java/scala-and-java-collection-exchanges/
在上一篇文章《再看Kafka Lag》中筆者提及了Scala與Java集合互轉(zhuǎn)的內(nèi)容,但是并未有詳述,本文對此做一個(gè)補(bǔ)充說明,方便在使用的時(shí)候可以隨時(shí)翻閱。
對于集合而言,Scala從2.8.1開始引入scala.collection.JavaConverters用于Scala與Java集合的互轉(zhuǎn)。在scala代碼中如果需要集合轉(zhuǎn)換,首先引入scala.collection.JavaConverters._,進(jìn)而顯示調(diào)用asJava或者asScala方法完成轉(zhuǎn)型。與此雷同的scala.collection.JavaConversions已被標(biāo)注為@Deprecated(since 2.12.0),JavaConversions可以做到隱式轉(zhuǎn)換,即不需要asJava或者asScala的調(diào)用,但是這樣可能會(huì)對閱讀造成障礙,可能會(huì)讓人難以知曉什么變成了什么。筆者這里羅列出JavaConverters支持的互轉(zhuǎn)類型(內(nèi)容來源于源碼注釋)。
在所有情形下,從原始類型轉(zhuǎn)變到對側(cè)類型之后再轉(zhuǎn)變回來的話會(huì)是同一個(gè)對象,舉例
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)另外,轉(zhuǎn)換方法也有其描述性的名稱可供顯示調(diào)用,舉例如下:
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)歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/java/scala-and-java-collection-exchanges/
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。
 
總結(jié)
以上是生活随笔為你收集整理的Scala与Java集合互转摘要的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 再看Kafka Lag
 - 下一篇: Kafka消息格式中的变长字段(Vari