场景:当在一个方法中, 你需要返回几个对象,这几个对象的类型一致,你可以返回一个数组;如果几个对象的类型不同呢,当然你可以返回一个Object[]数组,可是这样在使用结果数组的时候,就需要强转对象的类型,会导致类型不安全;也可以定义一个dto,当多个场景下需要使用的不同,需要定义多个dto,这样会类爆炸,而且重用率极低;在非常接近Java语言的Scala里有元组的定义:val t = (1, 3.14, "Fred"),就是一个不同类型的数据放到一个线性集合里,在Java里我们可以模拟出一个类似的结构,以适合上面的场景
demo:
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); } }
上面的代码中定义了三个类,父类为抽象类Tuple,此父类就是定义了一些模板方法,方法名有点不像Java方法名的命名规范,那是模仿scala里的方法命名,Tuple类没有其他作用,只是提供静态方法,创建Tuple的之类充当容器,提供多个容器的入口;
Tuple2<E,T>可以充当两个对象的容器,该容器内保持两个对象的引用,通过方法_1(), _2()获取第一个和第二个对象的值,在此并没有直接返回对象,而是返回一个Optional对象,这是提醒使用返回值的方法做非Null检查;
Tuple3<E,T,K>原理类似Tuple2,类似的可以做针对4个以及更多的对象容器,作为方法返回参数类型
相关推荐
Java元组类型javatuples使用实例 Java元组类型javatuples是Java中的一种元组类型,用于存储多个元素的集合。 javatuples框架提供了从1到10个元素的元组类型,包括Unit、Pair、Triplet、Quartet、Quintet、Sextet、...
在Python编程语言中,元组(Tuple)是一种不可变序列,这意味着一旦创建,就不能更改其内容。元组常用于存储一组有序且不需修改的数据,它们在内存中占用较少的空间,且可以作为字典的键,这是列表所不能做到的。...
在Java编程语言中,元组(Tuple)是一种特殊的数据结构,它允许我们存储多个不同类型的值在一个单一的对象中。在标准库中并没有内置的元组类型,但许多开发者通过自定义类或者第三方库来实现这一功能。在这个场景下...
Tuplespace的Java实现。 移动到https://github.com/mike-k-houghton/tuplespace元组是项目的有序列表。 元组空间是一种关联存储器,其中条目,元组存储在该空间中,并使用基于元组的内在属性的搜索条件进行检索。 这...
自己编写的TupleUtil元组工具类,可自行扩展,支持get获取元素
day06回顾 list 列表 in / not in 运算符 索引取值 索引赋值 切片取值 切片赋值 del 语句用于列表 del 变量 ...元组 tuple 元组是不可改变的序列,同list一样,元组可以存放任意类型的元素,一但元
tuple1[6][0] = 'java' # 这里修改的是列表元素,而不是元组元素 print(tuple1) ``` 在上述例子中,尽管看起来元组的最后一个元素改变了,实际上元组并没有变,因为它的最后一个元素是一个列表,列表是可以修改的。...
Python 是一种高级的编程语言,它提供了多种数据结构,包括列表(List)、元组(Tuple)、集合(Set)和字典(Dict)。这些数据结构可以用来存储和处理数据,本文将详细介绍它们的用法和特点。 List(列表) List ...
先来一份完整的爬虫工程师面试考点: 一、 Python 基本功 1、简述Python 的特点和优点 ...列表和元组都是可迭代对象,能够对其进行循环、切片等,但元组 tuple 是不可变的。元组不可变的特性,使得它可以成为字典 Dict
描述 "java-tuple.zip,元组和一组操纵器Java元组" 指出这是一个关于Java元组的项目,可能是一个开源库,提供了对Java标准库中缺失的元组支持。元组是一种可以存储多个不同类型的值的数据结构,通常用于临时存储一组...
8. 在Java中模拟Python元组:如果涉及Java部分,会介绍如何在Java中实现类似元组的概念,如使用`Pair`类或其他容器。 通过这个项目,无论是Python新手还是有经验的开发者,都能深入理解和应用Python元组,同时可能...
元组(Tuple)作为一种数据结构,通常包含多个元素,每个元素可以有不同的数据类型,它在消息传递中扮演着关键角色。 1. **元组的概念**: 元组是一种有序的数据集合,它可以包含任意数量的元素,每个元素都有自己...
元组(Tuple)是另一种序列类型的数据结构,与列表不同的是,元组是不可变的。创建元组使用圆括号(),并同样用逗号分隔元素,例如:tuple = (ele1, ele2, ...)。由于元组不可变,所以不能直接对其元素进行增删改操作...
总的来说,Apache Storm的Spout和Bolt通过元组在Java中进行数据交互,Spout生成数据流,Bolt接收并处理这些数据。理解这些概念以及如何在实际代码中实现它们对于构建高效、可靠的实时数据处理系统至关重要。
5. **查询元组**:`read`方法与`take`类似,但它不会移除元组,而是返回一个匹配元组的列表,例如:`List<Tuple> results = tupleSpace.read(new Tuple("key", Query.MATCH_ALL))`。 6. **超时操作**:`take`和`...
对于 Java 开发者,SkySpace 提供了一套完整的 Java SDK,其中包括了丰富的类和接口,如 TupleSpace(元组空间接口)、ReadWriteLock(读写锁机制)以及各类操作方法(如 put、take、read 等)。这些类和接口使得...
此外,Python还有列表(list)、元组(tuple)、集合(set)和字典(dict)等复合数据类型,它们分别对应Java的ArrayList、数组、HashSet和HashMap。 在Python中,函数定义使用`def`关键字,函数可以作为返回值,...
游戏 2048 的 N 元组...N-Tuple Networks for the Game 2048 的时间差分学习,Marcin Szubert 和 Wojciech Jaśkowski,IEEE 计算智能和游戏会议论文集,2014 年 8 月,德国多特蒙德( ) 执照 根据 Apache 许可,版
Python有五大标准数据类型:Numbers(数字),String(字符串),List(列表),Tuple(元组)和Dictionary(字典)。Python的数据类型是动态的,不像Java那样需要提前声明。 - **赋值**:在Python中,可以同时给...