- 浏览: 230234 次
- 性别:
- 来自: 北京
文章分类
最新评论
原文地址:http://50vip.com/35.html
一、为什么使用元组tuple?
元组和列表list一样,都可能用于数据存储,包含多个数据;但是和列表不同的是:列表只能存储相同的数据类型,而元组不一样,它可以存储不同的数据类型,比如同时存储int、string、list等,并且可以根据需求无限扩展。
比如说在web应用中,经常会遇到一个问题就是数据分页问题,查询分页需要包含几点信息:当前页数、页大小;查询结果返回数据为:当前页的数据记录,但是如果需要在前台显示当前页、页大小、总页数等信息的时候,就必须有另外一个信息就是:数据记录总数,然后根据上面的信息进行计算得到总页数等信息。这个时候查询某一页信息的时候需要返回两个数据类型,一个是list(当前也的数据记录),一个是int(记录总数)。当然,完全可以在两个方法、两次数据库连接中得到这两个值。事实上在查询list的时候,已经通过sql查询得到总计录数,如果再开一个方法,再做一次数据库连接来查询总计录数,不免有点多此一举、浪费时间、浪费代码、浪费生命。言重了~在这种情况下,我们就可以利用二元组,在一次数据库连接中,得到总计录数、当前页记录,并存储到其中,简单明了!
二、源码实例
一、为什么使用元组tuple?
元组和列表list一样,都可能用于数据存储,包含多个数据;但是和列表不同的是:列表只能存储相同的数据类型,而元组不一样,它可以存储不同的数据类型,比如同时存储int、string、list等,并且可以根据需求无限扩展。
比如说在web应用中,经常会遇到一个问题就是数据分页问题,查询分页需要包含几点信息:当前页数、页大小;查询结果返回数据为:当前页的数据记录,但是如果需要在前台显示当前页、页大小、总页数等信息的时候,就必须有另外一个信息就是:数据记录总数,然后根据上面的信息进行计算得到总页数等信息。这个时候查询某一页信息的时候需要返回两个数据类型,一个是list(当前也的数据记录),一个是int(记录总数)。当然,完全可以在两个方法、两次数据库连接中得到这两个值。事实上在查询list的时候,已经通过sql查询得到总计录数,如果再开一个方法,再做一次数据库连接来查询总计录数,不免有点多此一举、浪费时间、浪费代码、浪费生命。言重了~在这种情况下,我们就可以利用二元组,在一次数据库连接中,得到总计录数、当前页记录,并存储到其中,简单明了!
二、源码实例
/** <p>Title: TwoTuple</p> * <p>Description: 两个元素的元组,用于在一个方法里返回两种类型的值</p> * @author Xewee.Zhiwei.Wang@gmail.com * @site http://wzwahl36.net * @version 2012-3-21 上午11:15:03 * @param <A> * @param <B> */ public class TwoTuple<A, B> { public final A first; public final B second; public TwoTuple(A a, B b) { this.first = a; this.second = b; } } //扩展为三元组(按此可以任意扩展) /** * <p>Title: ThreeTuple</p> * <p>Description: 三个元素的元组,用于在一个方法里返回三种类型的值</p> * @author Xewee.Zhiwei.Wang@gmail.com * @site http://wzwahl36.net * @version 2012-3-21 上午11:15:50 * @param <A> * @param <B> * @param <C> */ public class ThreeTuple<A, B, C> extends TwoTuple<A, B> { public final C third; public ThreeTuple(A a, B b, C c) { super(a, b); this.third = c; } } //工具类 import java.util.ArrayList; import java.util.List; import com.bluesea.bean.GoodsBean; /** * <p>Title: TupleUtil</p> * <p>Description: * 元组辅助类,用于多种类型值的返回,如在分页的时候,后台存储过程既返回了查询得到的 * 当页的数据(List类型),又得到了数据表中总共的数据总数(Integer类型),然后将这 * 两个参数封装到该类中返回到action中使用 * 使用泛型方法实现,利用参数类型推断,编译器可以找出具体的类型 * </p> * @author Xewee.Zhiwei.Wang@gmail.com * @site http://wzwahl36.net * @version 2012-3-21 上午09:59:39 * @param <A> * @param <B> */ public class TupleUtil { public static <A, B> TwoTuple<A, B> tuple(A a, B b) { return new TwoTuple<A, B>(a, b); } public static <A, B, C> ThreeTuple<A, B, C> tuple(A a, B b, C c) { return new ThreeTuple<A, B, C>(a, b, c); } // 测试 public static void main(String[] args) { List<GoodsBean> goodsBeans = new ArrayList<GoodsBean>(); for(int i = 1; i < 26; i++) { GoodsBean goodsBean = new GoodsBean(); goodsBean.setGoodsId(i); goodsBeans.add(goodsBean); } Integer totalProperty = 47; // TupleUtil<List<GoodsBean>, Integer> tupleUtil = new TupleUtil<List<GoodsBean>, Integer>(goodsBeans, totalProperty); TwoTuple<List<GoodsBean>, Integer> twoTuple = TupleUtil.tuple(goodsBeans, totalProperty); List<GoodsBean> list = twoTuple.first; System.out.println(list); System.out.println(twoTuple.second); } }
发表评论
-
JAVA调用热敏打印机
2018-04-24 19:48 2564package test; import java. ... -
java中JSON转对象
2018-04-24 19:26 712依赖jar JSON格式 {order:{buyer:'大 ... -
Log4j输出多个文件
2017-12-22 13:54 604log4j.rootLogger=warn,stdout, ... -
Eclipse生成可运行jar策略
2017-12-06 21:03 624一个普通的java工程,用cxf连接webserivice。在 ... -
在线运行java测试
2017-12-01 11:42 1204http://www.runoob.com/try/runco ... -
TOMCAT不能正常启动总结
2017-11-29 14:11 1072记录下TOMCAT不能启动的几种原因 -
bat获得环境变量属性值的第一段
2017-10-27 17:38 1155分号将Path中的路径分隔开,取第一个路径用tokens=1, ... -
自定义result返回值(转载)
2017-10-27 10:43 669Struts2 自定义Result ... -
HttpClient使用
2017-10-26 17:14 546http://blog.csdn.net/z6918378 ... -
调用HTTP下载文件401错误
2017-08-03 09:19 1394public static boolean httpDow ... -
MAVEN通过URL下载jar
2017-12-06 22:47 1319MAVEN通过URL下载jar -
传统行业到互联网
2017-03-27 23:02 496http://card.weibo.com/article/h ... -
spring+mybatis+struts2集成
2017-03-23 11:34 434这篇写的不错:http://blog.csdn.net/afg ... -
Map与Json互相转换
2017-01-06 10:44 947/**************************** ... -
maven搭建SSM
2016-12-09 17:49 583可参考:http://wosyingjun.iteye.com ... -
maven发布tomcat
2016-12-08 10:21 437转载:http://www.cnblogs.com/g ... -
swing-FlowLayout垂直布局
2016-12-07 17:35 1598package layout; import jav ... -
dom4j及xpath基础应用
2016-12-01 14:17 561Jdom:对于小型xml处理就好 dom4j:对于大文件优与j ... -
Websocket
2016-11-02 10:28 499最简单的理解 ,websock ... -
JAVA 读取最后一行 删除最后一行 覆盖最后一行
2016-09-26 16:33 1834注:有的地方视情况而定,比如nextend = start+l ...
相关推荐
java元组jar包,官方下载,亲自可用! javatuples ---------- To learn more and download latest version: http://www.javatuples.org
Java元组类型javatuples使用实例 Java元组类型javatuples是Java中的一种元组类型,用于存储多个元素的集合。 javatuples框架提供了从1到10个元素的元组类型,包括Unit、Pair、Triplet、Quartet、Quintet、Sextet、...
描述 "java-tuple.zip,元组和一组操纵器Java元组" 指出这是一个关于Java元组的项目,可能是一个开源库,提供了对Java标准库中缺失的元组支持。元组是一种可以存储多个不同类型的值的数据结构,通常用于临时存储一组...
在Java编程语言中,元组(Tuple)是一种特殊的数据结构,它允许我们存储多个不同类型的值在一个单一的对象中。在标准库中并没有内置的元组类型,但许多开发者通过自定义类或者第三方库来实现这一功能。在这个场景下...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
标题提到的"pair:用于在 Java 中创建元组的小包"可能是一个专门为Java提供元组支持的开源项目,它简化了在Java中处理两个值的数据结构的需求。 元组是一种轻量级的数据结构,它可以存储多个不同类型的数据,并且不...
【免费题库】华为OD机试 - 勾股数元组(Java & JS & Python & C & C++).html
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 这时一个简单的Java实现,在RSA网络安全工具类是比较完整的实现。
列表和元组是Python中最常用的数据结构,二者都用于存储一系列的数据,但二者在使用上有明显的区别。 列表(List)是Python中的可变序列类型,这意味着列表中的元素可以被改变,可以动态地进行增加、删除、修改等...
类型的Tuples Java的强类型元组库安装玛文 < dependency> < groupId>...例如: 计算总和(N),总和(N ^ 2) 可以使用数组来完成此操作,如下所示: int [] result = IntStream . rangeClosed( 1 , 3 )
在Python编程语言中,元组(Tuple)是一种不可变序列,这意味着一旦创建,就不能更改其内容。元组常用于存储一组有序且不需修改的数据,它们在内存中占用较少的空间,且可以作为字典的键,这是列表所不能做到的。...
在编程语言如Python、C#或Java中,元组被广泛使用。在消息传递中,元组用于封装不同类型的变量,便于一次性传输多个数据项。 2. **行业分类与设备装置**: 在“行业分类-设备装置”上下文中,我们可以理解为不同...
- **Java编译与执行**:Java源代码经过编译后生成位元组码,这些位元组码由JVM解释执行。这种方式使得Java具有跨平台的能力。 #### Java语法基础 - **程式范例**:Java程序的基本结构通常包含一个公共类(public ...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
Python,以其简洁的语法和强大的科学计算库而备受青睐,"python_dict_turple_test.py"可能包含了Python使用字典和元组进行性能测试的代码。Python的字典操作通常很快,但由于动态类型和解释执行,对于千万级数据处理...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...