java 元组_简单实现 Java 的 Tuple 元组数据类型
元组类型,即 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 元组数据类型相关推荐
- 简单java程序_简单的Java程序
简单java程序 Simple java programs are good for assessing the coding skills of a programmer. You will fin ...
- java 抽奖_简单实现java抽奖系统
导读热词 本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public cla ...
- 小学数学闯关游戏 java代码_简单的java程序 小学数学闯关游戏 多谢高分
展开全部 有4个类 MainFrame,Question,QuestionPanel,ResultPanel import java.awt.BorderLayout; import java.awt ...
- 简单的秒表计时器java报告_简单的Java秒表计时器(线程)
秒表的个个位数的计算: package Seconds; public class Watch_time extends Thread{ int ms,ms_1,ms_2; int s,s_1; in ...
- 日记本java代码_简单的JAVA日记本程序源代码
[实例简介] 一个入门级的JAVA程序源代码,界面绝对赞,很Q的日记本,原理不复杂,代码注释非常详尽清晰,一看就懂.适合初学者. [实例截图] [核心代码] JAVA日记本程序 └── yang ├─ ...
- java抽奖_简单实现java抽奖系统
本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public class Us ...
- 高斯模糊java代码_简单的java高斯模糊算法
importjava.awt.Color;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.IOException ...
- java宠物小精灵_简单的Java宠物小精灵战斗模拟器
我已经写了一个类来创建和战斗口袋妖怪,但我无法弄清楚如何在测试者类中调用战斗方法来测试我写的类. 我的任务是编写和测试模拟两个口袋妖怪之间的战斗模拟.每个口袋妖怪都有一个健康值,一个强度值和一个速度值 ...
- 清华大学计算中心培训部-技术分享:JAVA入门:简单的Java程序
JAVA入门:简单的Java程序 清华大学计算中心培训部-技术分享:http://training.tsinghua.edu.cn/html/jishuyuandi/2009/0302/27.html
最新文章
- 《深入理解Java虚拟机》(第二版)学习2:垃圾收集算法
- 设计模式实战 - 责任链模式
- css怎么把背景图片拉伸至100%
- treeset java_Java TreeSet add()方法与示例
- 优化算法笔记|萤火虫算法理解及实现
- 【转】使用 OpenSSL API 进行安全编程 - 创建基本的安全连接和非安全连接
- 下拉树取值与赋值单元格填报(取值赋值)
- Notepad3(高级文本编辑器)v5.19.815.2595版本更新啦
- MySQL数据库教程之十四:MySQL触发器
- 计算机中常用的声音编辑工具有哪些,电脑常用音频剪辑软件
- 基于三菱PLC的两轴圆弧插补
- Flutter Connection to **** was not upgraded to websocket
- React.js介绍
- 勇者斗恶龙 java实现
- java单例模式(Holder模式美滋滋)
- Python更新失败:SSL错误——Conda/Python
- 2022年内蒙古最新建筑八大员(标准员)模拟考试试题及答案
- mysql _数据库表的创建
- openstack单节点安装(先电版)
- html超链接跳出脚本错误,Windows7打开网页弹出当前页面的脚本发生错误如何解决?...
热门文章
- mysql开启binlog日志影响性能吗_mysql binlog日志优化及思路
- linux服务器 缓存,Linux服务器内存使用分析及内存缓存
- cmd xcopy 拷贝文件夹_u盘文件夹被病毒隐藏怎么解决 u盘文件夹被病毒隐藏解决方法【详细步骤】...
- oracle手机怎么样,ORACLE环境存储哪家强?
- electron 打开调试_构建基于 iOS 模拟器的前端调试方案
- MySQL中的substr()函数
- mysql中如何将几个没有关系的结果集放在一起
- 微服务RPC框架-Feign
- Spring Boot中@Autowired可以省略的情况
- 定积分在计算机中的应用,计算机模拟定积分的定义