首页 文章

在Scala中打印Tuples字符串的长度

提问于
浏览
-1

我是Scala的新手 . 我有一个元组[Int,String]

((1, "alpha"), (2, "beta"), (3, "gamma"), (4, "zeta"), (5, "omega"))

对于上面的列表,我想打印相应长度为4的所有字符串 .

4 回答

  • 0

    在Scala中打印Tuples字符串的长度

    val tuples = List((1, "alpha"), (2, "beta"), (3, "gamma"), (4, "zeta"), (5, "omega"))
    println(tuples.map(x => (x._2, x._2.length)))
    //List((alpha,5), (beta,4), (gamma,5), (zeta,4), (omega,5))
    

    我想打印相应长度为4的所有字符串

    您可以首先 filter 然后 print as

    val tuples = List((1, "alpha"), (2, "beta"), (3, "gamma"), (4, "zeta"), (5, "omega"))
    tuples.filter(_._2.length == 4).foreach(x => println(x._2))
    

    它应该打印

    beta
    zeta
    
  • 1

    您可以将 Tuple 转换为 List ,然后根据需要进行映射和过滤:

    tuple.productIterator.toList
    .map{case (a,b) => b.toString}
    .filter(_.length==4)
    

    例:

    对于给定的输入:

    val tuple = ((1, "alpha"), (2, "beta"), (3, "gamma"), (4, "zeta"), (5, "omega"))
    tuple: ((Int, String), (Int, String), (Int, String), (Int, String), (Int, String)) = ((1,alpha),(2,beta),(3,gamma),(4,zeta),(5,omega))
    

    输出:

    List[String] = List(beta, zeta)
    
  • 0

    假设你有一个元组列表,你需要所有字符串长度等于4的值 .

    您可以在列表上执行过滤:

    val filteredList = list.filter(_._2.length == 4)
    

    然后迭代每个元素以打印它们:

    filteredList.foreach(tuple => println(tuple._2))
    
  • 1

    这是实现这一目标的方法

    scala> val x = ((1, "alpha"), (2, "beta"), (3, "gamma"), (4, "zeta"), (5, "omega"))
    x: ((Int, String), (Int, String), (Int, String), (Int, String), (Int, String)) = ((1,alpha),(2,beta),(3,gamma),(4,zeta),(5,omega))
    
    scala> val y = x.productIterator.toList.collect{
      case ele : (Int, String) if ele._2.length == 4 => ele._2
    }
    y: List[String] = List(beta, zeta)
    

相关问题