Scala - 将字符串数组转换为Set [PhoneNumbers]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala - 将字符串数组转换为Set [PhoneNumbers]相关的知识,希望对你有一定的参考价值。
我是Scala的新手,我有一个允许的PhoneNumbers列表,我应该从yaml文件中获取。我在我的配置文件下有这样的:
allowedPhoneNumbers:
- 101111111001
- 101111111002
- 101111111003
我有一个Config特性,我可以从yaml文件中获取允许的电话号码列表:
val allowedPN1= config.getStringList("allowedPhoneNumbers").toArray
要么
def allowedPN2: util.List[String] = config.getStringList("allowedPhoneNumbers")
我有一个应该返回Set [PhoneNumbers]的函数。如果我想要归还一些
config.allowedPN1.toSet[PhoneNumbers]
它编译得很好,但是当我正在构建项目时,我得到了一个
type arguments [PhoneNumbers] do not conform to method toSet's type parameter bounds [B >: Object]
那么,我如何将我的列表(从配置文件中获取)转换为一些Set [PhoneNumbers]。其中PhoneNumbers只是一个具有所需模式匹配的类。
case class PhoneNumbers(value: String) {
require(Pattern.matches("\d{12}", value),
"The number must be a 12 digit phone number.")
override def toString: String = value
}
答案
一种选择是首先执行地图操作,将字符串转换为电话号码:
val mySet = config.getStringList("allowedPhoneNumbers")
.toList
.map(PhoneNumbers(_))
.toSet
运行一个简单的例子:
scala> val lista = List("546452222222", "666666666666")
lista: List[String] = List(546452222222, 666666666666)
scala> lista.map(PhoneNumbers(_)).toSet
res4: scala.collection.immutable.Set[PhoneNumbers] = Set(PhoneNumbers(546452222222), PhoneNumbers(666666666666))
以上是关于Scala - 将字符串数组转换为Set [PhoneNumbers]的主要内容,如果未能解决你的问题,请参考以下文章