- 浏览: 63880 次
文章分类
最新评论
-
小灯笼:
ZooKeeper分布式专题与Dubbo微服务入门网盘地址:h ...
dubbo+zookeeper构建高可用分布式集群 -
qingfengxiu1985:
有没有全部工程代码?发一个呗,邮箱:qingfengxiu19 ...
mongodb+spring +morphia完整版框架搭建
在Java 中我们平时用的接口和方法 只是单一的返回某一个对象 有时候,我们需要同时返回两个不同的对象,这时候就需要用到元组数据结构(ps:自己最早接触元组 是在scala语言中 有兴趣朋友可以去看一下,也是一种函数式编程思想。)元组可以灵活的在一个方法中同时返回你想要的两个结果。不用再去构建新的代码去接受。
测试:
打印值为下;
Connected to the target VM, address: '127.0.0.1:51475', transport: 'socket'
test
1
2
3
Disconnected from the target VM, address: '127.0.0.1:51475', transport: 'socket'
看完 是不是觉得这种元组数据结构在某些地方用起来很方便呢。
public class Tuple { public static <V1, V2> Tuple2<V1, V2> of(V1 v1, V2 v2) { return new Tuple2<>(v1, v2); } public static <V1, V2, V3> Tuple3<V1, V2, V3> of(V1 v1, V2 v2, V3 v3) { return new Tuple3<>(v1, v2, v3); } }
public class Tuple2<V1, V2> { private final V1 v1; private final V2 v2; public Tuple2(V1 v1, V2 v2) { this.v1 = v1; this.v2 = v2; } public static <V1, V2> Tuple2<V1, V2> of(V1 v1, V2 v2) { return new Tuple2<>(v1, v2); } public V1 _1() { return v1; } public V2 _2() { return v2; } @Override public String toString() { return "(" + v1 + "+" + v2 + ")"; } /** * 重写hashcode * * @return 用31 可以减少hashcode值在范围内值冲突 以及31可以被JVM优化 * <p> * * 左移 << : 左边的最高位丢弃,右边补全0(把 << 左边的数据*2的移动次幂)。 * * 右移 >> : 把>>左边的数据/2的移动次幂。 * * 无符号右移 >>> : 无论最高位是0还是1,左边补齐0。 * <p> * 所以 : 31 * i = (i << 5) - i(左边 31*2=62,右边 2*2^5-2=62) - 两边相等,JVM就可以高效的进行计算啦。。。 */ @Override public int hashCode() { int result = v1.hashCode(); result = 31 * result + v2.hashCode(); return result; } /** * 重写equals 方法 */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } //对象为空,或者引用地址不等 返回 false if (obj == null || getClass() != obj.getClass()) { return false; } // 值不等返回false Tuple2<?, ?> tuple2 = (Tuple2<?, ?>) obj; if (!v1.equals(tuple2.v1)) return false; return v2.equals(tuple2.v2); } }
public class Tuple3<V1,V2,V3> { private final V1 v1; private final V2 v2; private final V3 v3; public Tuple3(V1 v1, V2 v2, V3 v3) { this.v1 = v1; this.v2 = v2; this.v3 = v3; } public static <V1, V2, V3> Tuple3<V1, V2, V3> of(V1 v1, V2 v2, V3 v3) { return new Tuple3<>(v1, v2, v3); } public V1 _1() { return v1; } public V2 _2() { return v2; } public V3 _3() { return v3; } @Override public String toString() { return "(" + v1 + "," + v2 + "," + v3 + ')'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Tuple3<?, ?, ?> tuple3 = (Tuple3<?, ?, ?>) o; if (!v1.equals(tuple3.v1)) return false; if (!v2.equals(tuple3.v2)) return false; return v3.equals(tuple3.v3); } @Override public int hashCode() { int result = v1.hashCode(); result = 31 * result + v2.hashCode(); result = 31 * result + v3.hashCode(); return result; } }
测试:
package com.stduy; import com.stduy.Tuple.Tuple2; import java.util.ArrayList; import java.util.List; import static java.lang.System.out; /** * @author zhangkun * @create 2018-12-17 10:16 AM * @desc **/ public class TupleTest { public static void main(String[] args) { Tuple2<String, List> tuple = testTuple(); out.println(tuple._1()); List<Integer> list = tuple._2(); list.stream().forEach(out::println); } public static Tuple2<String,List> testTuple(){ List<Integer> longList = new ArrayList<>(3); longList.add(1); longList.add(2); longList.add(3); return Tuple2.of("test",longList); } }
打印值为下;
Connected to the target VM, address: '127.0.0.1:51475', transport: 'socket'
test
1
2
3
Disconnected from the target VM, address: '127.0.0.1:51475', transport: 'socket'
看完 是不是觉得这种元组数据结构在某些地方用起来很方便呢。
发表评论
-
Java 设计模式源码
2020-08-17 20:17 141经过一段时间学习和实践,整理了绝大多数设计模式源码demo 。 ... -
mac ngrok 使用
2018-12-20 18:22 817ngrok 是一个反向代理,通过在公共端点和本 ... -
JDK8新特性Stream与parallelStream比较
2018-12-15 12:27 4120最近进公司 学习jdk8性特性,今天对常用的遍历f ... -
密码学2 密码安全注意
2018-11-30 15:11 4921.Java API支持 位于java.security包及子 ... -
base64 和 base32 源码解析
2018-11-30 14:19 1410package com.zd.demo; import ... -
maven 常用命令
2018-01-22 14:43 330mvn compile 编译源代码 mvn test-comp ... -
上传excel 通过url下载文件
2017-07-06 16:22 1006/** * 下载图片 */ ... -
多线程实现原理并发机制
2017-03-07 20:29 752进程: 查询百度大致可以理解为一段具有独 ... -
网络编程TCP/IP协议组
2017-03-04 13:42 466TCP/IP是个协议组: 主要可以分为4层,分别是应 ... -
Guava包的ListenableFuture解析
2016-10-09 13:40 983package com.downjoy.test.guava. ... -
spring+guava事件异步分发处理
2016-10-09 09:56 4272Guava是Google开源的一个Java基础类库,它在Goo ... -
httpUtil工具和apche httpclient 工具类使用
2016-09-26 15:38 2331httpUtil请求网络请求工具: package demo ... -
mongodb+spring +morphia完整版框架搭建
2016-09-09 10:22 5658Morphia是一个开放源代 ... -
mongodb注解详解
2016-09-06 09:26 39871、@Entity 如果你想通过Morphia把你的对 ... -
自定义MD5加盐加密方式代码实现
2016-09-02 16:45 5013按照自己的理解对密码加盐加密。当用户注册时候会先生成盐值 ... -
密码学
2016-08-25 11:14 5211 密码学简介 2.1 ... -
kafka
2016-08-11 14:08 655Kafka is a distributed,partiti ... -
dubbo+zookeeper构建高可用分布式集群
2016-08-24 09:47 4899(1) 当服务越来越多时, ... -
java生产6为邀请码
2016-08-09 17:23 1889package demo.dcn.vo; import ... -
jxl
2016-08-09 14:30 450Java生成和操作Excel文件 package dem ...
相关推荐
主要介绍了Java元组类型javatuples使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
游戏 2048 的 N 元组网络 此代码允许使用 n 元组网络作为游戏 2048 的评估函数。有关更多信息,请访问 作者 Marcin Szubert ( ) Wojciech Jaśkowski ( ) Paweł Liskowski ( ) 建造 您需要 Java 1.7 和 Maven。 ...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
人物:一个心血来潮学习Python的JAVA程序员 文章目录vlog正文入门基础注释算数运算符及优先级程序执行原理变量概念和定义方式变量的命名变量的输入和输出数据类型数值型非数值型列表元组列表与元组的互相转换字典...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
有编程基础,学过c和java,纯干货Python学习笔记 时间充裕的推荐看视频学习,时间较紧的可以看我的笔记 有问题欢迎斧正 视频链接会在最后一个笔记中附上
可以对其使用swig工具进行封装,以便能被更高级的语言使用,比如C#,java等。读者可以在网上找到很多swig的例子。 GSL原码是以GPL协议发布的,获取与使用都非常地方便,这也是我们之所以选取GSL学习的根本原因。 ...
积分管理系统java源码 目前有一些自然语言处理工具,可以快速地完成NLP任务,如: NLTK:处于领先的地位,提供了 WordNet 、分类、分词、标注、语法分析、语义推理等类库。 Pattern:包括词性标注工具,N元搜索,情感...
回顾 1.模板的语法 1.变量 在视图中: ... 允许传递到模板中变量的数据类型: 数字,字符串,字典,列表,元组,对象 在模板中: ... {{list[1]}} 或 {{list.1}} ... {% for 变量 in 列表,元组,字典%}
学习本章,要熟练掌握Python组合数据类型(列表、元组、字符串、字典、集合)的创建、访问和常见基本操作,以及序列解包功能。 第4章 Python控制结构。针对物质随时间由简单向复杂、由低级向高级发展的顺序,Python...
学习本章,要熟练掌握Python组合数据类型(列表、元组、字符串、字典、集合)的创建、访问和常见基本操作,以及序列解包功能。 第4章 Python控制结构。针对物质随时间由简单向复杂、由低级向高级发展的顺序,Python...