使用ForEach循环Scala存储单个数据

时间:2016-06-08 15:51:28

标签: scala amazon-web-services amazon-s3 foreach

我是Scala的新手,我正试图弄清楚如何迭代一系列Buckets(来自Amazon AWS),并从每个存储桶获取数据并将其存储在新阵列中。

在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 个答案:

答案 0 :(得分:1)

如果buckets是scala集合,则在scala中等效。

val names = buckets map (_.getName)

如果不是你需要说

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

对于更多的结构方法,在scala中不鼓励这样做,你不应该这样做,但为了完整起见,你可以看到你需要做些什么才能让你的解决方案起作用,你可以使用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