2016-06-08 51 views
0

我是Scala的全新用户,并且正试图弄清楚如何遍历一个Buckets阵列(从Amazon AWS),并从每个存储区获取数据并将其存储在一个新的阵列。使用ForEach循环存储个人数据Scala

在Java中,这将仅仅是

ArrayList<String> names = new ArrayList<String>(); 

for(Bucket bucket : bucket) { 
    names.add(bucket.getName(); 
} 

但是,我怎么做到这一点的Scala呢?我知道我定义了某种功能,它会像

buckets.foreach(bucket => FILL IN SOME WAY OF FILLING UP ARRAY) 

但是,这就是我得到的。

任何和所有的帮助将不胜感激。谢谢,

回答

1

这是相当于斯卡拉,如果buckets是一个scala集合。

val names = buckets map (_.getName) 

如果这不是你需要说

import scala.collection.JavaConverters._ 
buckets.asScala.map(_.getName) 

更多结构性的办法,那就是在斯卡拉灰心,你不应该这样做,但completenes的缘故,所以你可以看到你会必须做的就是你的解决方案的工作,你可以使用foreach像这样

var names = Vector.empty[String] 
buckets foreach (bucket => names :+= bucket.getName) 

或foreach循环,这可能是比较熟悉

var names = Vector.empty[String] 
for (bucket <- buckets) { 
    names :+= bucket.getName 
} 

但是你仍然可以使用的理解和实现功能的方式

val names = for (bucket <- buckets) yield bucket.getName 
有效的结果