问题:在Java里面使用Pairs或者二元组

在Java里面,我的Hashtable要用到一个元组结构。在Java里面,我可以使用的什么数据结构呢?

Hashtable<Long, Tuple<Set<Long>,Set<Long>>> table = ...

回答一

我不认为在Java中有一个通用的元组类,但是一个自定义的元组就像下面那样简单的:

public class Tuple<X, Y> { public final X x; public final Y y; public Tuple(X x, Y y) { this.x = x; this.y = y; }
}

当然,关于如何进一步设计这个类,我们还要保证一些重要的性质,如相等性、不变性等,特别是对于如果你决定使用这个类作为hash的key的话。

回答二

As an extension to @maerics nice answer, I’ve added a few useful methods:

在@maerics答案的基础上,我添加了一些有用的方法:

public class Tuple<X, Y> { public final X x; public final Y y; public Tuple(X x, Y y) { this.x = x; this.y = y; }@Overridepublic String toString() {return "(" + x + "," + y + ")";}@Overridepublic boolean equals(Object other) {if (other == this) {return true;}if (!(other instanceof Tuple)){return false;}Tuple<X,Y> other_ = (Tuple<X,Y>) other;// this may cause NPE if nulls are valid values for x or y. The logic may be improved to handle nulls properly, if needed.return other_.x.equals(this.x) && other_.y.equals(this.y);}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((x == null) ? 0 : x.hashCode());result = prime * result + ((y == null) ? 0 : y.hashCode());return result;}
}

回答三

Apache Commons提供了一些常用的Java工具包括Pair。它实现了Map.Entry, Comparable 和 Serializable.

回答四

下面是一个Comparable元组,补充了@maerics的答案:

import java.util.*;public class ComparableTuple<X extends Comparable<? super X>, Y extends Comparable<? super Y>>extends Tuple<X, Y>implements Comparable<ComparableTuple<X, Y>>
{public ComparableTuple(X x, Y y) {super(x, y);}public int compareTo(ComparableTuple<X, Y> other) {int d = this.x.compareTo(other.x);if (d == 0)return this.y.compareTo(other.y);return d;}
}

文章翻译自Stack Overflow:https://stackoverflow.com/questions/2670982/using-pairs-or-2-tuples-in-java

在Java里面使用Pairs或者二元组相关推荐

  1. Java实现蓝桥杯互补二元组

    分三处 1.当差值为0并且只有一个二元组就不管他 2.当差值为0并且二元组个数>=1加上他并减去它本身 3.当差值为存在并且不为0时直接加上他 因为都计算了两次,所以最后ans/2 用了map的 ...

  2. java 二元组_java里有类似于二元组之类的数据结构么?

    二元组(D,R),D是数据元素的有限集,R是D关系上的有限集. 数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来 ...

  3. Java PriorityQueue(优先级队列/二叉堆)的使用及题目应用

    目录 PriorityQueue有几个需要注意的点: 重写比较器的方法 应用题目 LeetCode 1845. 座位预约管理系统 LeetCode 215. 数组中的第 K 个最大元素(同剑指 Off ...

  4. 2018java二级考试大纲_2018年全国计算机二级java考试简答题练习二

    2018年全国计算机二级java考试简答题练习二 1.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接 ...

  5. 2021年4月16日 阿里供应链Java研发实习面试(二面)

    title: 2021年4月16日 阿里供应链Java研发实习面试(二面) tags: 面经 2021年4月16日 阿里供应链Java研发实习面试(二面)(70min) 自我介绍 介绍自己的研究生项目 ...

  6. JVM 内部原理(七)— Java 字节码基础之二

    JVM 内部原理(七)- Java 字节码基础之二 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java ...

  7. 不重复打印排序数组中相加和为给定值的所有二元组和三元组

    题目 给定排序数组arr和整数k,不重复打印arr中所有相加和为k的不降序二元组.例如,arr = [-8, -4, -3, 0, 1, 2, 4, 5, 8, 9],k = 10,打印结果为:1,9 ...

  8. 下列哪些是java语言的条件执行语句_13春福师《JAVA程序设计》在线作业二

    13春福师<JAVA程序设计>在线作业二 试卷总分:100 测试时间:-- 单选题 多选题 判断题 一.单选题(共 30 道试题,共 60 分.) 1. 设有定义 int i = 6 ;, ...

  9. Java IO流学习总结二:File

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54581478 本文出自[赵彦军的博客] Java IO流学习总结一:输入输出流 J ...

最新文章

  1. SAP RETAIL MM41 创建的商品主数据里为啥会有Vendor Char.按钮?
  2. 智能合约从入门到精通:调用数据的布局和ABI
  3. win10 编译姿态估计AlphaPose
  4. linux:文件权限管理
  5. python红包游戏_脑力2048红包版
  6. 转:VC6.0与VC.net的具体区别
  7. kill所有java进程
  8. IEPNGFix:Unclickable children of element 解决办法
  9. 页游修改攻击力如何同步服务器,我的世界 怎么修改武器攻击力和属性 像服务器那样!!...
  10. 成都Uber优步司机奖励政策(3月23日)
  11. python命令行进入帮助模式_Python 命令行之旅:深入 click 之选项篇
  12. Python: str、datetime、time、seconds
  13. Esri大赛必备:3度带6度带中央经线及带号换算问题
  14. 百度云文字识别OCR【表格】
  15. 数学建模系列(三)-评价模型(六)---神经网络评价
  16. openstack项目中遇到的各种问题总结 其二(云主机迁移、ceph及扩展分区)
  17. 抖音壁纸小程序怎么做?手把手教你0元拥有自己的壁纸小程序
  18. 新特性解读 | MySQL 8.0 对 limit 的优化
  19. 常见英文缩写小节-江晚正愁余-iteye技术网站
  20. Piggy-Bank(背包)

热门文章

  1. shell脚本编写创建多层目录,判断目录是否存在,存在则删除并且给文件赋予权限
  2. Floyd-傻子也能看懂的弗洛伊德算法(转)
  3. 深圳互联网科技公司|外企篇
  4. 嗨,程序员,你知道高级工程师用的搜索引擎吗?
  5. ACL2022 PAIE: Prompting Argument Interaction for Event Argument Extraction
  6. 淘宝店到底哪些数据值得我们去分析?
  7. python中number函数_python-1:Number数字类型 之三 相关函数 Fraction
  8. 职业生涯规划(计算机网络),职业生涯规划(计算机网络)
  9. 游戏安全初学者学习资料
  10. apicloud——微信第三方登录、apple登录