java - Java 中的元组(异构元素的不可修改有序列表)支持

标签 java tuples

我想知道为什么 Java 在其标准库中没有元组数据结构实现。例如 C++ 有 a very good implementation这个固定大小的异构值集合。同样在Haskell .在Java中我只知道javatuples以及 Functional Java 中的一些支持通过 Product (P1 - P8) 类型的库。我想知道为什么 tuple 或至少 pair 根本不在标准库中?甚至 Android SDK 开发人员也添加了他们的 own implementation 2 元组(对)。

最佳答案

“Java 方式”是定义特定用途的类,而不是这些轻量级的半类类型。如果您考虑一下,元组实际上只是一个简化的结构; Java 人员希望您继续创建结构。

这种观点正在发生一些变化,尤其是在 Java 8 及其 lambda 中(这给 JDK 施加了压力,要求它提供通用的 Function 类型的接口(interface),而不是像 这样的特定于用例的接口(interface)FooCallback).但对于许多 Java 开发人员来说,这仍然是一种相当强烈的心态,并且有一定的道理。 Java 是一种非常静态类型的语言;元组介于静态类型和动态类型之间,因为类型系统中没有任何东西可以阻止您认为表示客户 ID 和名称的 (int, String) 实际上是一个 (int, String) 表示订单 ID 及其描述。

参见,例如,this discussion ("Tuples for n >= 2") 关于 Guava 项目中的问题。当然,这不是官方的;但它很好地体现了 Java 的思维方式。

关于java - Java 中的元组(异构元素的不可修改有序列表)支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13977236/

相关文章:

java - 对象未添加到列表中,列表返回空

c# - 为什么我应该避免在 C# 中创建 MutableTuple<T1,T2,TEtc> 类?

Python 3 : Convert Tuple to Dictionary

python - 如何将字节元组转换为整数并返回?

java :在二十世纪(1901 年 1 月 1 日至 2000 年 12 月 31 日),每个月的第一天有多少个星期日?

Java多线程同步方法有两个线程

python - 如果元组在 Python 中可以为空,如何按最后一个元素对元组列表进行排序?

python - 可变索引异构数据结构?

java - 在 JPanel 中插入 JLabel 不会将其置于顶部

java - 如何使用 Java 8 流获取每个不同键的第一个值?