首页 > 解决方案 > 数组搜索和计数 - scala

问题描述

我正在尝试在包装数组中找到元素的 # 个。以下是场景。

数组不需要排序。

它与 for 循环一起工作,效率非常低。有更好的方法吗?

在此处输入图像描述

日期在包装数组中(未排序) - 用户将指定开始和结束日期,并且必须计算它们之间的元素数量。

import java.text.SimpleDateFormat
import java.util.Date

def convertStringToDate(s: String): Date = {
  val DATE_FORMAT = "yyyy-MM-dd"
  val dateFormat = new SimpleDateFormat(DATE_FORMAT)
  dateFormat.parse(s)
}

val startDate = convertStringToDate("2016-02-01")
val endDate = convertStringToDate("2020-03-01")

val journeyDates = Array("2019-03-01", "2016-07-23", "2018-03-17", "2018-11-31", "2016-01-31").map(
  x => convertStringToDate(x)
)

def filterDates(
    datesArray: Array[java.util.Date],
    startDate: java.util.Date,
    endDate: java.util.Date
): Array[java.util.Date] = {
  datesArray.filter(date => date.after(startDate) && date.before(endDate))
}

val filteredDates = filterDates(journeyDates,startDate,endDate)

该代码效率不高 - 并且正在寻求优化性能。

标签: arraysalgorithmscala

解决方案


推荐阅读