Scala 删除数组中重复项的方法

标签 scala

我想学习如何编写 for 循环函数,而无需在代码的前面声明“var”。例如,我想删除整数数组中的重复项。在 C++/Java 中,我可以这样做:

int removeDuplicate(vector<int> nums)
{
     vector<int> output
     Map<int,int> counter;
     for(i = 0; i < nums.size(); i++)
     {
         if(!counter.has_key(nums[i]))
         {
             counter[nums[i]]=1;  //add new key-value pair
             output.push_back(nums[i]);
         }
     }

     return output;
}

但是在scala中,如何使用不可变变量来完成上述任务。

不要使用scala的内部函数,例如distinct .这个问题是关于 Scala 实现的。

最佳答案

在 Scala 中,为了避免在这种情况下使用 vars,您可以使用递归或 foldLeft 或 foldRight:

def distinct[A](list:List[A]):List[A] = 
  list.foldLeft(List[A]()) {
    case (acc, item) if acc.contains(item) => acc
    case (acc, item) => item::acc
  }   

关于Scala 删除数组中重复项的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46126243/

相关文章:

scala - 如何从 Spark DataFrame 中选择一个稳定的行子集?

scala - Scala 中并行集合的效率/可扩展性(图表)

Scaladoc 链接到另一个方法

json - 我应该如何在Scala中指定类似JSON的非结构化数据的类型?

java - 将 Java 集合转换为 Scala 集合

mysql - 使用 Slick 3.0 连接到 Mysql - No username, no password and bogus driver does not equal error

scala - 按有序索引对列表进行排序

scala - 类型和泛型 : difference between `[X <: Int]` and `{type X <: Int }`

Scala:继承中的构造函数顺序

scala - Apache Spark : Getting a InstanceAlreadyExistsException when running the Kafka producer