加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何将枚举转换为Scala中的Seq/List?

发布时间:2020-12-16 09:35:58 所属栏目:安全 来源:网络整理
导读:我正在编写一个servlet,需要从请求中获取所有参数。我发现request.getParameterNames返回一个java.util.Enumeration,所以我必须编写代码: val names = request.getParameterNameswhile(names.hasMoreElements) { val name = names.nextElement} 我想知道
我正在编写一个servlet,需要从请求中获取所有参数。我发现request.getParameterNames返回一个java.util.Enumeration,所以我必须编写代码:

val names = request.getParameterNames
while(names.hasMoreElements) {
    val name = names.nextElement
}

我想知道有没有办法将枚举转换为Seq / List,那么我可以使用map方法吗?

解决方法

你可以这样自己构建它

val nameIterator = Iterator.continually((names,names.nextElement)).takeWhile(_._1.hasMoreElements).map(_._2)

迭代器继续执行一个名称调用(names,names.nextElement),每个步骤返回原始枚举和下一个元素。停止条件当然是在takeWhile中,因为我们不需要遍历枚举永远,我们只映射值。

或者,您可以建立一个包装器:

val nameIterator = new Iterator[SomeType] { def hasNext = names.hasMoreElements; def next = names.nextElement }

或者,最后,这是内置的方法,可能是在这种情况下使用的方法:

val nameIterator = new scala.collection.JavaConversions.JEnumerationWrapper(names)

使用含义:

我还有一个如果您导入

import scala.collection.JavaConversions._

您可以隐式地执行(您还将获得其他Java合作伙伴的隐式转换)

request.getParameterNames.map(println)

它只是工作。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读