如何在Scala中将逗号分隔的字符串转换为LinkedHashSet

如何在Scala中将逗号分隔的字符串转换为LinkedHashSet,scala,Scala,在Scala中有没有一种简单的方法可以将逗号分隔的字符串转换为LinkedHashSet?目标是删除字符串中的重复项,但它需要一个FOR循环。所以我想我可以将字符串拆分成一个集合,比如LinkedHashSet,它可以保留原始顺序,也可以删除重复项。我做了一些研究,但没有找到办法。所以我想确认一下这是否可行 例如,对于字符串: aaa, bbb, ccc, aaa, ddd 我想让未来成为: aaa, bbb, ccc, ddd 谢谢就这么简单: import scala.colle

在Scala中有没有一种简单的方法可以将逗号分隔的字符串转换为LinkedHashSet?目标是删除字符串中的重复项,但它需要一个FOR循环。所以我想我可以将字符串拆分成一个集合,比如LinkedHashSet,它可以保留原始顺序,也可以删除重复项。我做了一些研究,但没有找到办法。所以我想确认一下这是否可行

例如,对于字符串:

 aaa, bbb, ccc, aaa, ddd
我想让未来成为:

   aaa, bbb, ccc, ddd

谢谢

就这么简单:

import scala.collection.mutable.LinkedHashSet
scala> "aaa, bbb, aaa, ccc, ddd".split(", ").to[LinkedHashSet]
res12: scala.collection.mutable.LinkedHashSet[String] = Set(aaa, bbb, ccc, ddd)
您也可以使用不可变的
ListSet
,尽管set的顺序相反

scala> import scala.collection.immutable.ListSet
scala> "aaa, bbb, aaa, ccc, ddd".split(", ").to[ListSet]
res0: scala.collection.immutable.ListSet[String] = ListSet(ddd, ccc, bbb, aaa)
scala> res0.toList.reverse
res1: List[String] = List(aaa, bbb, ccc, ddd)

就这么简单:

import scala.collection.mutable.LinkedHashSet
scala> "aaa, bbb, aaa, ccc, ddd".split(", ").to[LinkedHashSet]
res12: scala.collection.mutable.LinkedHashSet[String] = Set(aaa, bbb, ccc, ddd)
您也可以使用不可变的
ListSet
,尽管set的顺序相反

scala> import scala.collection.immutable.ListSet
scala> "aaa, bbb, aaa, ccc, ddd".split(", ").to[ListSet]
res0: scala.collection.immutable.ListSet[String] = ListSet(ddd, ccc, bbb, aaa)
scala> res0.toList.reverse
res1: List[String] = List(aaa, bbb, ccc, ddd)

您实际上不需要
LinkedHashSet
。Scala集合具有方便的方法
独特的

"aaa, bbb, ccc, aaa, ddd".split(", ").distinct.mkString(", ")
产生:

res0: String = aaa, bbb, ccc, ddd

您实际上不需要
LinkedHashSet
。Scala集合具有方便的方法
独特的

"aaa, bbb, ccc, aaa, ddd".split(", ").distinct.mkString(", ")
产生:

res0: String = aaa, bbb, ccc, ddd

这就是scala的方式!只是想澄清一下:取一个
字符串
,将其转换为字符串列表,并将其转换为一个
不同的
列表。就是这样。@isaias-b,严格地说,没有到
列表的转换
split
返回
Array[String]
,它隐式包装在
ArrayOps[String]
中,它扩展了
SeqLike[String]
,其中定义了
distinct
。我懒得查找确切的类型,但你绝对正确!;)非常感谢你。这就消除了collection@jlp从技术上讲,它并没有消除
Set
的使用,它只是对您隐藏了实现细节。使用
HashSet
是消除重复的最有效的方法。这就是scala方法!只是想澄清一下:取一个
字符串
,将其转换为字符串列表,并将其转换为一个
不同的
列表。就是这样。@isaias-b,严格地说,没有到
列表的转换
split
返回
Array[String]
,它隐式包装在
ArrayOps[String]
中,它扩展了
SeqLike[String]
,其中定义了
distinct
。我懒得查找确切的类型,但你绝对正确!;)非常感谢你。这就消除了collection@jlp从技术上讲,它并没有消除
Set
的使用,它只是对您隐藏了实现细节。无论如何,使用
HashSet
是消除重复的最有效方法。