scala java迭代器的转换

以kafka consumer代码为例

//对应包
import scala.collection.JavaConversions
import scala.collection.convert.Decorators
import scala.collection.JavaConverters._

// records类型为ConsumerRecords<K, V>

while(true){
      val records = consumer.poll(100)
      //迭代方式1
      val it=records.iterator()
      while (it.hasNext){
        if(f(it.next().value())){
          LOGGER.info("success deal getByLine")
        }
      }
    //迭代方式2,java Map转scala
      val it=records.iterator()
      val res = JavaConversions.asScalaIterator[ConsumerRecord[String, String]](it)
    for(re:ConsumerRecord[String,String] <- res){
        if(f(re.value())){
          LOGGER.info("success deal getByLine")
        }
      }

    //迭代方式3,java Map转scala
      for(re:ConsumerRecord[String,String] <- records.asScala){
        if(f(re.value())){
          LOGGER.info("success deal getByLine")
        }
      }
    }
posted @ 2017-09-01 17:54  鎏鑫岁月  阅读(806)  评论(0编辑  收藏  举报