Java 中的元组(异构元素的不可修改有序列表)支持
我想知道为什么Java在其标准库中没有元组数据结构实现。例如,C++很好地实现了这个固定大小的异构值集合。在Haskell中也是如此。在Java中,我只知道javatuples和通过()类型在功能Java库中的一些支持。我想知道为什么或至少根本不在标准库中?甚至Android SDK开发人员也添加了他们自己的2元组(对)实现。Product
P1 - P8
tuple
pair
我想知道为什么Java在其标准库中没有元组数据结构实现。例如,C++很好地实现了这个固定大小的异构值集合。在Haskell中也是如此。在Java中,我只知道javatuples和通过()类型在功能Java库中的一些支持。我想知道为什么或至少根本不在标准库中?甚至Android SDK开发人员也添加了他们自己的2元组(对)实现。Product
P1 - P8
tuple
pair
“Java方式”是定义特定于使用的类,而不是这些轻量级的半类类型。如果你仔细想想,元组实际上只是一个简化的结构;Java的人希望你继续创建结构。
这种观点正在发生变化,特别是在Java 8及其lambdas中(这给JDK带来了压力,要求提供通用类型的接口,而不是像这样特定于用例的接口)。但对于许多Java开发人员来说,这仍然是一个相当强大的心态,并且有一定的意义。Java是一种非常静态类型的语言;元组介于静态类型和动态类型之间,因为类型系统中没有任何内容可以阻止您认为表示客户 ID 和名称实际上是表示订单 ID 及其描述的内容。Function
FooCallback
(int, String)
(int, String)
例如,参见关于番石榴项目中这个问题的讨论(“n >= 2”的元组)。当然,这不是官方的。但它很好地代表了Java的思维方式。
有一个不错的图书馆叫.它为从 1() 到 10() 的 arities 定义了泛型元组类型,以及所有基本方法,如 、 、 甚至 。javatuples
Unit
Decade
equals
hashCode
toString
compareTo
官方网站: http://www.javatuples.org/
Maven 依赖关系:
<dependency>
<groupId>org.javatuples</groupId>
<artifactId>javatuples</artifactId>
<version>[version]</version>
<scope>compile</scope>
</dependency>
(目前最新版本是1.2
)