【问题标题】:scala Convert String to tuple and insert into listscala 将字符串转换为元组并插入到列表中
【发布时间】:2017-11-27 16:41:11
【问题描述】:

代码:

var tup = ""
var l1 = new ListBuffer[String]()    
tup=""
for (element1 <- tds) {
tup += element1.text + "|"
}
l1 += tup
l1

输出:

ListBuffer(STANDINGS|CONFERENCE|OVERALL|, ACC|W-L|GB|PCT|W-L|PCT|STRK|, North Carolina|14-2|--|.875|29-5|.853|L1|, Duke|13-3|1|.813|27-6|.818|L1|)

现在这是一个字符串列表。我希望它是一个元组列表。

【问题讨论】:

  • 你能提供更多细节吗? to tuple 是什么意思?什么是元组类型?另外,请以正确的方式格式化您的代码。谢谢
  • 元组类型为字符串,但大小不同。
  • 那么如果大小不是常数,为什么要它是一个元组呢?以后打算怎么用?也许List[List[String]] 会更适合你?请提供更多上下文以获得更好的答案。
  • 这些是记录,我只想引用记录中的每个元素。建议我做一些其他的方法。例如,record1,element1 将是 STANDINGS。如果索引从 1.record2 开始,则 element3 为 GB。

标签: scala tuples


【解决方案1】:

你不能。您正在寻找的东西(假设您想在| 上拆分)不是很好的类型。你会得到

ListBuffer(("Standings", "Conference", "Overall"), ("ACC", "W-L", "GB", ...), ...)

第一个元素是Tuple3[String, String, String]。第二个是Tuple7[String, ... String],和ListBuffer,像所有集合一样,不能有异构类型。不过,您可以获得ListBuffer 的数组。

l1.map(_.split("|"))

【讨论】:

  • ListBuffer(("Standings", "Conference", "Overall"), ("ACC", "W-L", "GB", ...), ...)。这就是我期望的输出。
  • 如果我使用 l1.map(_.split("|")),我得到了 List([Ljava.lang.String;@6f1fba17)List([Ljava.lang.String;@ 185d8b6, [Ljava.lang.String;@67784306)List([Ljava.lang.String;@335eadca,...
  • 这正是我刚才所说的。你所期待的是没有很好地输入。它在 Scala 中不存在,因为 Scala 是一种静态类型语言。你会得到一些毫无价值的类型,比如ListBuffer[AnyRef],你将无法做任何事情。
  • 澄清一下,对于列表,List(1, 2, 3)List(1, 2) 具有相同的类型,但对于元组,(1, 2, 3)(1, 2) 具有不同的类型。这是元组定义方式的一部分,这就是为什么你不能做你想做的事。
  • 正确的方法是使用数组或列表,因为结构具有可变长度。您为什么反对涉及列表的解决方案?
【解决方案2】:

我使用了List[List[String]]。现在可以引用每个元素。 我正在将列表添加到这样的列表中

(1::2::Nil)::(5::7::Nil)::Nil

现在我的输出是这样的

List(List(STANDINGS, CONFERENCE, OVERALL), List(ACC, W-L, GB, PCT, W-L, PCT, STRK))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多