scala – 在Seq中找到满足条件X的第一个元素
发布时间:2020-12-16 09:33:09 所属栏目:安全 来源:网络整理
导读:一般来说,如何在Seq中找到满足一定条件的第一个元素? 例如,我有一个可能的日期格式的列表,我想找到第一个格式的解析结果可以解析我的日期字符串。 val str = "1903 January"val formats = List("MMM yyyy","yyyy MMM","MM yyyy","MM,yyyy") .map(new Sim
一般来说,如何在Seq中找到满足一定条件的第一个元素?
例如,我有一个可能的日期格式的列表,我想找到第一个格式的解析结果可以解析我的日期字符串。 val str = "1903 January" val formats = List("MMM yyyy","yyyy MMM","MM yyyy","MM,yyyy") .map(new SimpleDateFormat(_)) formats.flatMap(f => {try { Some(f.parse(str)) }catch { case e: Throwable => None }}).head 不错。但是,它有点丑陋。它做了一些不必要的工作(尝试“MM yyyy”和“MM,yyyy”格式)。也许有更优雅和惯用的方式? (使用Iterator?) 解决方法
如果你有信心至少有一个会格式会成功:
formats.view.map{format => Try(format.parse(str)).toOption}.filter(_.isDefined).head 如果你想要更安全一点: formats.view.map{format => Try(format.parse(str)).toOption}.find(_.isDefined)
A (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |