相关疑难解决方法(0)

为什么Scala中的groupBy会更改列表项的顺序?

此代码来自Scala工作表:

case class E(a: Int, b: String)

val l = List(
    E(1, "One"),
    E(1, "Another One"),
    E(2, "Two"),
    E(2, "Another Two"),
    E(3, "Three")
)

l.groupBy(x => x.a)                             
// res11: scala.collection.immutable.Map[Int,List[com.dci.ScratchPatch.E]] =
//    Map(
//      2 -> List(E(2,Two), E(2,Another Two)),
//      1 -> List(E(1,One), E(1,Another One)),
//      3 -> List(E(3,Three))
//    )
Run Code Online (Sandbox Code Playgroud)

您会注意到groupBy返回一个映射,但是元素的排序现在与之前的顺序不同.知道为什么会这样,最好的方法是避免这种情况吗?

scala

21
推荐指数
2
解决办法
6481
查看次数

插入顺序ListSet

ListSet(collection.immutable.ListSet)是一个反向排序集.我需要订购套装.这是原始ListSet的一个示例:

var a = ListSet(1,2,3)
var ite = a.iterator
ite.next // returns 3
ite.next // returns 2
ite.next // returns 1
Run Code Online (Sandbox Code Playgroud)

这是我需要的一个例子:

var a = ListSet(1,2,3)
var ite = a.iterator
ite.next // returns 1
ite.next // returns 2
ite.next // returns 3
Run Code Online (Sandbox Code Playgroud)

更新:

"订购"是我的"插入订单".我需要这个:

var a = ListSet(1,2,3)
a += 5
a += 4
var ite = a.iterator
ite.next // returns 1
ite.next // returns 2
ite.next // returns 3
ite.next // returns 5
ite.next // returns 4
Run Code Online (Sandbox Code Playgroud)

scala list set

8
推荐指数
3
解决办法
5922
查看次数

为什么最多要订购4个元素的集合,而没有排序的元素呢?

给定

val xs1 = Set(3, 2, 1, 4, 5, 6, 7)
val ys1 = Set(7, 2, 1, 4, 5, 6, 3)
Run Code Online (Sandbox Code Playgroud)

xs1ys1这两个结果scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 7, 3, 4)

但较小的波纹管

val xt1 = Set(1, 2, 3)
val yt1 = Set(3, 2, 1)
Run Code Online (Sandbox Code Playgroud)

生产

xt1: scala.collection.immutable.Set[Int] = Set(1, 2, 3)
yt1: scala.collection.immutable.Set[Int] = Set(3, 2, 1)
Run Code Online (Sandbox Code Playgroud)

为什么不订购前者而订购后者似乎呢?

scala set

2
推荐指数
1
解决办法
65
查看次数

Scala 是否会自动更改集合中数据的顺序?

我正在查看 scala 的一个集合示例,我注意到当创建 states3 时,编译器更改了该集合成员的顺序,怀俄明州排在第三位,现在是最后一个。有人可以解释为什么会发生这种情况吗?

scala> val states = Set("Alabama", "Alaska", "Wyoming")
states: scala.collection.immutable.Set[String] = Set(Alabama, Alaska, Wyoming)
scala> val states2 = states + "Virginia"
states2: scala.collection.immutable.Set[String] =
Set(Alabama, Alaska, Wyoming, Virginia)
scala> val states3 = states2 + ("New York", "Illinois")
states3: scala.collection.immutable.Set[String] =
Set(Alaska, Virginia, Alabama, New York, Illinois, Wyoming)
Run Code Online (Sandbox Code Playgroud)

从编程 Scala 中获取的示例:可扩展性 = 函数式编程 + 对象 by Dean Wampler

scala

2
推荐指数
2
解决办法
141
查看次数

Scala中集合的连接,意外结果

以下是一些改编自在线Scala教程的代码:

object Test {
  def main(args: Array[String]) {
      val fruit1 = List("apples", "oranges", "pears")
      val fruit2 = List("mangoes", "banana")
      val veg1 = Set("potatoes", "carrots", "peas")
      val veg2 = Set("cabbage", "squash")

      var fruit = fruit1 ++ fruit2
      println( "fruit1 ++ fruit2 : " + fruit )
      var vegetable = veg1 ++ veg2
      println( "veg1 ++ veg2 : " + vegetable )
   }
}
Run Code Online (Sandbox Code Playgroud)

以下是结果:

fruit1 ++ fruit2:列表(苹果,橘子,梨,芒果,香蕉)

veg1 ++ veg2:套装(卷心菜,豌豆,南瓜,胡萝卜,土豆)

List连接按照我的预期工作,但我永远不会预测Set连接的结果顺序.任何人都可以解释结果是如何得出的?这里的在线教程没什么帮助.

scala

1
推荐指数
1
解决办法
269
查看次数

Scala - 展平包含Seq的Seq

鉴于:

Seq(1,2,3) map {
  case 1 => 11
  case 2 => Seq(12,13,14)
  case 3 => 15
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能优雅地将其展平为Seq[Int]含有Seq(11,12,13,14,15)

scala

0
推荐指数
1
解决办法
2539
查看次数

标签 统计

scala ×6

set ×2

list ×1