在Java里面使用Pairs或者二元组
问题:在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或者二元组相关推荐
- Java实现蓝桥杯互补二元组
分三处 1.当差值为0并且只有一个二元组就不管他 2.当差值为0并且二元组个数>=1加上他并减去它本身 3.当差值为存在并且不为0时直接加上他 因为都计算了两次,所以最后ans/2 用了map的 ...
- java 二元组_java里有类似于二元组之类的数据结构么?
二元组(D,R),D是数据元素的有限集,R是D关系上的有限集. 数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来 ...
- Java PriorityQueue(优先级队列/二叉堆)的使用及题目应用
目录 PriorityQueue有几个需要注意的点: 重写比较器的方法 应用题目 LeetCode 1845. 座位预约管理系统 LeetCode 215. 数组中的第 K 个最大元素(同剑指 Off ...
- 2018java二级考试大纲_2018年全国计算机二级java考试简答题练习二
2018年全国计算机二级java考试简答题练习二 1.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接 ...
- 2021年4月16日 阿里供应链Java研发实习面试(二面)
title: 2021年4月16日 阿里供应链Java研发实习面试(二面) tags: 面经 2021年4月16日 阿里供应链Java研发实习面试(二面)(70min) 自我介绍 介绍自己的研究生项目 ...
- JVM 内部原理(七)— Java 字节码基础之二
JVM 内部原理(七)- Java 字节码基础之二 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java ...
- 不重复打印排序数组中相加和为给定值的所有二元组和三元组
题目 给定排序数组arr和整数k,不重复打印arr中所有相加和为k的不降序二元组.例如,arr = [-8, -4, -3, 0, 1, 2, 4, 5, 8, 9],k = 10,打印结果为:1,9 ...
- 下列哪些是java语言的条件执行语句_13春福师《JAVA程序设计》在线作业二
13春福师<JAVA程序设计>在线作业二 试卷总分:100 测试时间:-- 单选题 多选题 判断题 一.单选题(共 30 道试题,共 60 分.) 1. 设有定义 int i = 6 ;, ...
- Java IO流学习总结二:File
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54581478 本文出自[赵彦军的博客] Java IO流学习总结一:输入输出流 J ...
最新文章
- SAP RETAIL MM41 创建的商品主数据里为啥会有Vendor Char.按钮?
- 智能合约从入门到精通:调用数据的布局和ABI
- win10 编译姿态估计AlphaPose
- linux:文件权限管理
- python红包游戏_脑力2048红包版
- 转:VC6.0与VC.net的具体区别
- kill所有java进程
- IEPNGFix:Unclickable children of element 解决办法
- 页游修改攻击力如何同步服务器,我的世界 怎么修改武器攻击力和属性 像服务器那样!!...
- 成都Uber优步司机奖励政策(3月23日)
- python命令行进入帮助模式_Python 命令行之旅:深入 click 之选项篇
- Python: str、datetime、time、seconds
- Esri大赛必备:3度带6度带中央经线及带号换算问题
- 百度云文字识别OCR【表格】
- 数学建模系列(三)-评价模型(六)---神经网络评价
- openstack项目中遇到的各种问题总结 其二(云主机迁移、ceph及扩展分区)
- 抖音壁纸小程序怎么做?手把手教你0元拥有自己的壁纸小程序
- 新特性解读 | MySQL 8.0 对 limit 的优化
- 常见英文缩写小节-江晚正愁余-iteye技术网站
- Piggy-Bank(背包)
热门文章
- shell脚本编写创建多层目录,判断目录是否存在,存在则删除并且给文件赋予权限
- Floyd-傻子也能看懂的弗洛伊德算法(转)
- 深圳互联网科技公司|外企篇
- 嗨,程序员,你知道高级工程师用的搜索引擎吗?
- ACL2022 PAIE: Prompting Argument Interaction for Event Argument Extraction
- 淘宝店到底哪些数据值得我们去分析?
- python中number函数_python-1:Number数字类型 之三 相关函数 Fraction
- 职业生涯规划(计算机网络),职业生涯规划(计算机网络)
- 游戏安全初学者学习资料
- apicloud——微信第三方登录、apple登录