首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala:从Array[String]到Array[Array[String]]

Scala:从Array[String]到Array[Array[String]]
EN

Stack Overflow用户
提问于 2015-05-27 15:36:13
回答 1查看 1K关注 0票数 0

我在scala有一个Array[String],像这样

代码语言:javascript
复制
my_array: Array[String] = Array(RED;BLUE, RED;PINK, RED;ORANGE, RED;WHITE, RED;YELLOW, 
RED;GREY,GREEN;BLUE, GREEN;PINK, GREEN;BROWN, GREEN;ORANGE, GREEN;WHITE, GREEN;YELLOW, GREEN;GREY)

我需要得到这个结果

代码语言:javascript
复制
my_new_array: Array[Array[String]] = Array(Array(RED;BLUE, RED;PINK, RED;ORANGE, RED;WHITE,RED;YELLOW, RED;GREY), 
Array(GREEN;BLUE, GREEN;PINK, GREEN;BROWN, GREEN;ORANGE, GREEN;WHITE, GREEN;YELLOW, GREEN;GREY), 
Array(RED;BLUE, GREEN;BLUE), Array(RED;PINK, GREEN;PINK), 
Array(RED;ORANGE, GREEN;ORANGE), Array(RED;WHITE, GREEN;WHITE),    
Array(RED;YELLOW, GREEN;YELLOW), Array(RED;GREY, GREEN;GREY))

这些应该是步骤。

  • 获取唯一颜色的列表。这意味着我必须用";“分隔每一个字符串。
  • 一旦我有了这个列表,我就必须创建一个包含按每种颜色分组的原始字符串的新数组

有人有线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-27 15:46:18

如果我正确理解了你的问题,这应该是可行的(可能不是有史以来最有效的解决方案)。

代码语言:javascript
复制
myArray
.flatMap(_.split(';'))                      // get all the colors
.distinct                                   // get the unique set of colors
.map(color => myArray.filter(_.contains(color)))  // map each color to each group containing it

我使用contains,假设对于"YELLOW",您希望同时匹配"YELLOW";"RED""RED";"YELLOW"

如果只想与前者匹配,则可以使用startsWith整数。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30487030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档