Как sum
влияет на логику, и что именно является v1
, неясно из вашего кода, но похоже, что вы просматриваете GlobalArray
много раз.Если это так, имеет смысл преобразовать этот массив в более удобную для поиска структуру данных: Map
.Вы можете сделать это следующим образом
val globalMap = GlobalArray.toMap
, а затем вы можете использовать, чтобы соединить строки следующим образом:
println(SpecificArray.flatMap({case (k,v) => globalMap(k).map(s => (k,v,s))}).toList)
Если вам нужны только строки, вы можете использовать только
println(SpecificArray.flatMap({case (k,v) => globalMap(k)}).toList)
Обратите внимание, что в этом коде предполагается, что для каждого ключа в SpecificArray
будет соответствующий ключ в GlobalArray
.Если это не так, вам следует использовать другой метод для доступа к Map
, например getOrElse
:
println(SpecificArray.flatMap({case (k,v) => globalMap.getOrElse(k, Array()).map(s => (k,v,s))}).toList)
Обновление
Если sum
на самом деле count
и работает для целых «соединенных» данных, а не для каждого ключа в SpecificArray
, вы можете использовать take
вместо него.Код будет выглядеть так:
val joined = SpecificArray2.flatMap({case (k,v) => globalMap.getOrElse(k, Array()).map(s => (s,v))})
.take(100) // use take instead of sum
И тогда вы можете использовать joined
так, как захотите.И обновленная демонстрация, которая создает v1
как объединенную строку формы v1 += String_of_GlobalArray + " = " + 2nd_Int_of_SpecificArray
, здесь .Идея состоит в том, чтобы использовать mkString
вместо явного обновления переменных.