1。Tuple的英文意思是元组的意思
2。场景:当在一个方法中, 你需要返回几个对象,这几个对象的类型一致,你可以返回一个数组;如果几个对象的类型不同呢,当然你可以返回一个Object[]数组,可是这样在使用结果数组的时候,就需要强转对象的类型,会导致类型不安全;也可以定义一个dto,当多个场景下需要使用的不同,需要定义多个dto,这样会类爆炸,而且重用率极低;在非常接近Java语言的Scala里有元组的定义:val t = (1, 3.14, “Fred”),就是一个不同类型的数据放到一个线性集合里,在Java里我们可以模拟出一个类似的结构,以适合上面的场景

abstract class Tuple {  public static void main (String[] args) {  Tuple tuple2 = Tuple.<String, Integer>of("hello", 1);  Tuple tuple3 = Tuple.<String, Integer, String>of("hello", 1, "hi");  System.out.println(tuple2._1().get() + "|" + tuple2._2().get());  System.out.println(tuple3._1().get() + "|" + tuple3._2().get() + "|" + tuple3._3().get());  }  public static  <E, T> Tuple of (E e, T t) {  return new Tuple2(e, t);  }  public static  <E, T, K> Tuple of (E e, T t, K k) {  return new Tuple3(e, t, k);  }  public abstract <E> Optional<E> _1 ();  public abstract <E> Optional<E> _2 ();  public abstract <E> Optional<E> _3 ();  }  class Tuple2<E, T> extends Tuple {  private E e;  private T t;  Tuple2 (E e, T t) {  this.e = e;  this.t = t;  }  @Override  public Optional<E> _1 () {  return Optional.of(e);  }  @Override  public Optional<T> _2 () {  return Optional.of(t);  }  @Override  public <E> Optional<E> _3() {  return Optional.absent();  }
}  class Tuple3<E, T, K> extends Tuple {  private E e;  private T t;  private K k;  Tuple3 (E e, T t, K k) {  this.e = e;  this.t = t;  this.k = k;  }  public Optional<E> _1 () {  return Optional.of(e);  }  public Optional<T> _2 () {  return Optional.of(t);  }  public Optional<K> _3 () {  return Optional.of(k);  }
}

运行结果如下

hello|1
hello|1|hi

上面的代码中定义了三个类,父类为抽象类Tuple,此父类就是定义了一些模板方法,方法名有点不像Java方法名的命名规范,那是模仿scala里的方法命名,Tuple类没有其他作用,只是提供静态方法,创建Tuple的之类充当容器,提供多个容器的入口;
Tuple2<E,T>可以充当两个对象的容器,该容器内保持两个对象的引用,通过方法_1(), _2()获取第一个和第二个对象的值,在此并没有直接返回对象,而是返回一个Optional对象,这是提醒使用返回值的方法做非Null检查;
Tuple3<E,T,K>原理类似Tuple2,类似的可以做针对4个以及更多的对象容器,作为方法返回参数类型

scala学习-scala中的元组Tuple概念相关推荐

  1. scala学习-scala读取Hbase表中数据并且做join连接查询

    1.业务需求:sparkSQL on hbase ,sparkSQL直接读取Hbase中的两个表,进行连接查询. 2.图示 绿色的线 上图中绿色的线是做过测试的,直接在hive中建表,然后load数据 ...

  2. scala学习-scala中的特殊符号使用

    1.=> 使用 目前知道的基本和匿名函数定义和函数类型声明有关,以及在case语句中的使用 1. 匿名函数定义, 左边是参数 右边是函数实现体 (x: Int)=>{} 2.函数类型的声明 ...

  3. scala学习-scala中:: , +:, :+, :::, +++的区别

    4种操作符的区别和联系 :: 该方法被称为cons,意为构造,向队列的头部追加数据,创造新的列表.用法为 x::list,其中x为加入到头部的元素,无论x是列表与否,它都只将成为新生成列表的第一个元素 ...

  4. 笨方法“学习python笔记之元组(tuple)

    Tuple(元组)是python的基本序列三种类型之一(另外两种是List, Range),是"笨方法"学python3中没有讲到的数据类型,因此专门查了下官方资料,中可以查找到对 ...

  5. scala学习-scala通过mkString方法把一个集合转化为一个字符串

    Problem 如果你想要把集合元素转化为字符串,可能还会添加分隔符,前缀,后缀. Solution 使用mkString方法来打印一个集合内容,下面给一个简单的例子: scala> val a ...

  6. Scala学习笔记-详细记录学习中遇到的知识点

    目录 输入 print输出 变量 数据类型 标识符与关键字 运算符优先级 if else for循环 yield生成器 break与continue 函数 局部函数 惰性lazy 异常 类与对象 构造 ...

  7. python中元组的概念_python元组的概念与基本操作

    元组与列表类似,关于元组同样需要做如下三点: A.概念 1.元组通过英文状态下的圆括号构成"()".其存放元素与列表一样,可以是不通的数值类型,也可以是不通的数据结构. 2.元组仍 ...

  8. Java元组Tuple

    Java中的元组Tuple 文章目录 Java中的元组Tuple 1. 概念 2. 使用 2.1 依赖Jar包 2.2 基本使用 2.2.1 直接调用 2.2.2 自定义工具类 2.2.3 示例代码 ...

  9. scala学习之scala中一些集合的常用函数

    scala学习 集合常用函数 集合的基本属性与常用操作 长度.大小.循环遍历.迭代器.生成字符串.是否有包含等 object TestSetFunction {def main(args: Array ...

最新文章

  1. 在Ubuntu 14.04 64bit上搭建单机本地节点Spark 1.3.0环境
  2. linux每日命令,日常整理linux常用命令大全(收藏)
  3. centos7 安装 python3
  4. 查看 SQL Server 2000 中数据表所占用的磁盘空间
  5. 计算机缺少php5.dll,php5isapi.dll 64位
  6. QT的QQuickView类的使用
  7. The world at your fingertips — 天涯明月刀幕后(后记)
  8. [Python]no encoding declared 错误解决方法
  9. java 防止表单重复提交
  10. RetroGuard的使用方法(转)
  11. 太香了!4999元就能入手iPhone 11 最高降价达900元
  12. mysql 报错注入输出多个字段_SQL注入浅析
  13. 图标字体Font Awesome 4.7 的引入与使用
  14. linux磁盘满了怎么转移,linux 磁盘转移空间的方法
  15. ASP.NET Web Pages:WebGrid 帮助器
  16. MATLAB实现遥感图像分类——K均值算法
  17. echarts字体大小自适应
  18. 计算机 桌面显示桌面图标不见了,显示桌面图标不见了怎么办,小编教你电脑显示桌面图标不见了怎么解决...
  19. python什么是高阶函数_对于高阶函数的理解是什么?
  20. Word文件打开的时候需要输入密码?

热门文章

  1. 瑞幸咖啡首席技术官也离职了:并未参加公司财务造假
  2. 全球蜂窝基带芯片厂商去年营收209亿美元,华为海思占16%
  3. 微信iOS 7.0.9版本更新:今天的朋友圈是一片欢乐的海洋!
  4. 旷视申请赴港IPO:阿里蚂蚁金服持股近30%
  5. 《人生一串》第二季收官 B站播放量突破5400万
  6. 新iPhone将采用更大容量电池:最低3110mAh?
  7. 库克放出拜年视频 来自Apple Park的祝福
  8. 如何理解Python装饰器?
  9. anti-wrinkle_anti-wrinkle cream是什么意思
  10. linux zfs功能,linux – 有没有办法一次设置多个ZFS文件系统属性?