Java元组Tuple使用实例--转载
2023-09-11 14:21:41 时间
原文地址:http://50vip.com/35.html
一、为什么使用元组tuple?
元组和列表list一样,都可能用于数据存储,包含多个数据;但是和列表不同的是:列表只能存储相同的数据类型,而元组不一样,它可以存储不同的数据类型,比如同时存储int、string、list等,并且可以根据需求无限扩展。
比如说在web应用中,经常会遇到一个问题就是数据分页问题,查询分页需要包含几点信息:当前页数、页大小;查询结果返回数据为:当前页的数据记录,但是如果需要在前台显示当前页、页大小、总页数等信息的时候,就必须有另外一个信息就是:数据记录总数,然后根据上面的信息进行计算得到总页数等信息。这个时候查询某一页信息的时候需要返回两个数据类型,一个是list(当前也的数据记录),一个是int(记录总数)。当然,完全可以在两个方法、两次数据库连接中得到这两个值。事实上在查询list的时候,已经通过sql查询得到总计录数,如果再开一个方法,再做一次数据库连接来查询总计录数,不免有点多此一举、浪费时间、浪费代码、浪费生命。言重了~在这种情况下,我们就可以利用二元组,在一次数据库连接中,得到总计录数、当前页记录,并存储到其中,简单明了!
二、源码实例
二元组:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/** <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; } } |
扩展为三元组(按此可以任意扩展)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
/** * <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; } } |
元组操作工具类、测试类(可按需自定义)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
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虚拟机学习-JVM内存管理:深入Java内存区域与OOM(3)
- Java经典练习题_Day05
- Java 线程实例二(终止线程、生产者/消费者问题、获取线程状态、获取所有线程、查看线程优先级、中断线程)
- Java 中接口 interface 实例介绍
- 【JAVA】JSP中的session、cookie、application的区别和操作实例(菜鸟的理解方式解读)
- 【JAVA】日期函数及格式化实例大全。(后续更新中...)
- JAVA爬虫Nutch、WebCollector的正则约束
- There is insufficient memory for the Java Runtime Environment to continue问题解决
- 深入理解Java中的IO
- 《TensorFlow技术解析与实战》——2.3 基于Java的安装
- Java: mysql-connector-java
- 【java细节】Java代码忽略https证书:No subject alternative names present
- 34 异常机制 异常体系结构 Java把异常当做对象来处理 并定义一个基类java.lang.Throwable作为所有异常的超类 Error Exception
- java随笔5 完整路径的应用
- Java经典实例:按字符颠倒字符串
- JSONCkecker(Java语言版本)
- Java学习-009-文件名称及路径获取实例及源代码
- Java_java动态编译整个项目,解决jar包找不到问题
- Java实例---简单的上课管理系统
- Java实例---flappy-bird实例解析
- 策略模式原理及Java代码实例
- Java操作Mongodb 保存/读取java对象到/从mongodb
- 简单的JAVA MVC框架模式--Java-servlet-JavaBean
- 从零学Java(22)之do while 语句
- java程序中的ibatis连接mySql的基本实例
- Java锁机制4.0