嗨,我正在尝试从下面的列表数组中获取元素的第二位置和第四位置。有人可以指导我如何从下面的列表中获取它
List[Array[String]] = List(Array(111, 1, 333, 100), Array(112, 2, 222, 505), Ar
0), Array(117, 1, 444, 540), Array(118, 1, 666, 4400), Array(119, 3, 333, 3300), Array
00))
预期结果应该是
List((1,100), (2,505), (3,510), (4,600), (1,510), (1,520), (1,540), (1,4400), (3,3300), (1,1500), (1,2500), (3,4500), (1,1100))
答案 0 :(得分:0)
以下是使用map
的解决方案:
yourList.map(_.toList) // 1.
.map {
case _::b::_::d::_ => b::d::Nil // 2.
case _ => Nil // 3.
}.filterNot(_.isEmpty) // .4
List
,因为它们很容易匹配。这会给您:List(List(1, 100), List(2, 505), List(1, 540), List(1, 4400), List(3, 3300))
发表评论后(您希望拥有这些数组的每个2.元素):
yourList.map(
_.grouped(2) // 1.
.filter(_.size == 2) // 2.
.map(_.last) // 3.
.toList
)
为进一步简化,您可以使用collect
:
yourList.map(
_.grouped(2) // 1.
.collect{ case Seq(_, e) => e} // 2. and 3. in one step
.toList
)