是否可以交换集合中的两个元素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以交换集合中的两个元素?相关的知识,希望对你有一定的参考价值。

让一个不可变的集合(例如Seq);我想交换一些元素(“some”=如果验证某些条件)。

从概念上讲,有两种情况:

  1. 交换是在原始集合的副本上完成的,因此它不依赖于先前的交换。
  2. 交换是在原始集合的副本上完成的 - 用于交换的副本 - 因此它取决于先前的交换。

第一种情况是最简单的一种。实际上,我们需要map,验证已处理元素的条件,我们用另一个替换它:my_collection.map(current_element => { if(...) { another_element } else { current_element }})。注意:可以使用其他条件,具体取决于确定每次交换的条件。

最后一种情况比较困难:我需要处理集合的当前状态。你知道这是否可能?

答案

唯一现实的方法是重复应用案例1,直到不再应用交换。

首先需要修改案例1以对原始集合使用foldLeft操作,该操作返回包含新集合的元组和指示是否执行了交换的boolean

然后将其包装在应用此操作的递归函数中,然后在没有发生交换时返回新集合,或者如果至少发生一次交换,则使用新集合递归调用自身。

如果“交换”操作将集合更改回以前的值之一,您可能还需要检查无限递归。

以上是关于是否可以交换集合中的两个元素?的主要内容,如果未能解决你的问题,请参考以下文章

13 个非常有用的 Python 代码片段

比较两个list里是不是有相同的元素

如何判断两个list集合是不是相等

JavaScript笔试题(js高级代码片段)

Groovy集合遍历 ( 调用集合的 every 方法判定集合中的所有元素是否符合闭包规则 | =~ 运算符等价于 contains 函数 | 代码示例 )

Python代码阅读(第13篇):检测列表中的元素是否都一样