元组类型,即 Tuple 常在脚本语言中出现,例如 Scala 的 ("Unmi", "fantasia@sina.com", "blahbla")。元组可认为是象数组一样的容器,它的目的是让你方便构造和引用,例如 Pair 可认为是一个只能存两个元素的元组,像是个 Map; 真正的元组应该是可以任意多个元素的容器,绕来绕去,它还是数组,或列表,所以我们实现上还是要借助于数组或是列表。

先看 Scala 中什么是元组:

val tuple = ("Unmi", "fantasia@sina.com", "blahblah...")

println(tuple._1) //输出 Unmi

1

2

valtuple=("Unmi","fantasia@sina.com","blahblah...")

println(tuple._1)//输出 Unmi

Scala 中访问从 1 开始,用 ._1 方式来访问其中的元素。

参照于此,写出一个 Java 版本的 Tuple,为增长你的键盘的使用寿命,我们把方法名也缩短了,例如 make 缩写为 mk,引用元素的方法名为 _,仍然保持 Java 的习惯,索引从 0 开始:

package cc.unmi.utils;

/**

* A simple java tuple

* @author Unmi

* @creation_date 2012/02/04

*/

public class Tuple<A> {

public static <A> Tuple mk(A ... args){

return new Tuple(args);

}

private A[] items;

private Tuple(A[] items) {

this.items = items;

}

public A _(int index){

if(index < 0 || items == null || index > items.length-1){

return null;

}

return items[index];

}

public static void main(String[] args) {

Tuple<String> t = Tuple.mk("Unmi","fantasia@sina.come");

System.out.println(t._(0)); //输出 Unmi

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

packagecc.unmi.utils;

/**

* A simple java tuple

* @author Unmi

* @creation_date 2012/02/04

*/

publicclassTuple<A>{

publicstatic<A>Tuplemk(A...args){

returnnewTuple(args);

}

privateA[]items;

privateTuple(A[]items){

this.items=items;

}

publicA_(intindex){

if(index<0||items==null||index>items.length-1){

returnnull;

}

returnitems[index];

}

publicstaticvoidmain(String[]args){

Tuple<String>t=Tuple.mk("Unmi","fantasia@sina.come");

System.out.println(t._(0));//输出 Unmi

}

}

代码间加了一个 main 测试方法,上面的代码输出什么无需多说了。

这样就实现了 Tuple.mk()  后接任意多个参数来构造一个 Tuple 对象。

java 元组_简单实现 Java 的 Tuple 元组数据类型相关推荐

  1. 简单java程序_简单的Java程序

    简单java程序 Simple java programs are good for assessing the coding skills of a programmer. You will fin ...

  2. java 抽奖_简单实现java抽奖系统

    导读热词 本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public cla ...

  3. 小学数学闯关游戏 java代码_简单的java程序 小学数学闯关游戏 多谢高分

    展开全部 有4个类 MainFrame,Question,QuestionPanel,ResultPanel import java.awt.BorderLayout; import java.awt ...

  4. 简单的秒表计时器java报告_简单的Java秒表计时器(线程)

    秒表的个个位数的计算: package Seconds; public class Watch_time extends Thread{ int ms,ms_1,ms_2; int s,s_1; in ...

  5. 日记本java代码_简单的JAVA日记本程序源代码

    [实例简介] 一个入门级的JAVA程序源代码,界面绝对赞,很Q的日记本,原理不复杂,代码注释非常详尽清晰,一看就懂.适合初学者. [实例截图] [核心代码] JAVA日记本程序 └── yang ├─ ...

  6. java抽奖_简单实现java抽奖系统

    本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public class Us ...

  7. 高斯模糊java代码_简单的java高斯模糊算法

    importjava.awt.Color;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException ...

  8. java宠物小精灵_简单的Java宠物小精灵战斗模拟器

    我已经写了一个类来创建和战斗口袋妖怪,但我无法弄清楚如何在测试者类中调用战斗方法来测试我写的类. 我的任务是编写和测试模拟两个口袋妖怪之间的战斗模拟.每个口袋妖怪都有一个健康值,一个强度值和一个速度值 ...

  9. 清华大学计算中心培训部-技术分享:JAVA入门:简单的Java程序

    JAVA入门:简单的Java程序 清华大学计算中心培训部-技术分享:http://training.tsinghua.edu.cn/html/jishuyuandi/2009/0302/27.html

最新文章

  1. 《深入理解Java虚拟机》(第二版)学习2:垃圾收集算法
  2. 设计模式实战 - 责任链模式
  3. css怎么把背景图片拉伸至100%
  4. treeset java_Java TreeSet add()方法与示例
  5. 优化算法笔记|萤火虫算法理解及实现
  6. 【转】使用 OpenSSL API 进行安全编程 - 创建基本的安全连接和非安全连接
  7. 下拉树取值与赋值单元格填报(取值赋值)
  8. Notepad3(高级文本编辑器)v5.19.815.2595版本更新啦
  9. MySQL数据库教程之十四:MySQL触发器
  10. 计算机中常用的声音编辑工具有哪些,电脑常用音频剪辑软件
  11. 基于三菱PLC的两轴圆弧插补
  12. Flutter Connection to **** was not upgraded to websocket
  13. React.js介绍
  14. 勇者斗恶龙 java实现
  15. java单例模式(Holder模式美滋滋)
  16. Python更新失败:SSL错误——Conda/Python
  17. 2022年内蒙古最新建筑八大员(标准员)模拟考试试题及答案
  18. mysql _数据库表的创建
  19. openstack单节点安装(先电版)
  20. html超链接跳出脚本错误,Windows7打开网页弹出当前页面的脚本发生错误如何解决?...

热门文章

  1. mysql开启binlog日志影响性能吗_mysql binlog日志优化及思路
  2. linux服务器 缓存,Linux服务器内存使用分析及内存缓存
  3. cmd xcopy 拷贝文件夹_u盘文件夹被病毒隐藏怎么解决 u盘文件夹被病毒隐藏解决方法【详细步骤】...
  4. oracle手机怎么样,ORACLE环境存储哪家强?
  5. electron 打开调试_构建基于 iOS 模拟器的前端调试方案
  6. MySQL中的substr()函数
  7. mysql中如何将几个没有关系的结果集放在一起
  8. 微服务RPC框架-Feign
  9. Spring Boot中@Autowired可以省略的情况
  10. 定积分在计算机中的应用,计算机模拟定积分的定义