`

JAVA元组

    博客分类:
  • JAVA
 
阅读更多
原文地址:http://50vip.com/35.html
一、为什么使用元组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元组jar包源代码

    java元组jar包,官方下载,亲自可用! javatuples ---------- To learn more and download latest version: http://www.javatuples.org

    Java元组类型javatuples使用实例

    Java元组类型javatuples使用实例 Java元组类型javatuples是Java中的一种元组类型,用于存储多个元素的集合。 javatuples框架提供了从1到10个元素的元组类型,包括Unit、Pair、Triplet、Quartet、Quintet、Sextet、...

    wss-agent-api-client-2.0.0.zip

    描述 "java-tuple.zip,元组和一组操纵器Java元组" 指出这是一个关于Java元组的项目,可能是一个开源库,提供了对Java标准库中缺失的元组支持。元组是一种可以存储多个不同类型的值的数据结构,通常用于临时存储一组...

    java语言版本的`元组`数据类型,实现了元组类型的特性以及常用操作方法,轻量级,无依赖,线程安全

    在Java编程语言中,元组(Tuple)是一种特殊的数据结构,它允许我们存储多个不同类型的值在一个单一的对象中。在标准库中并没有内置的元组类型,但许多开发者通过自定义类或者第三方库来实现这一功能。在这个场景下...

    Python 元组-元组变量的循环遍历

    Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...

    Python 元组-元组和格式化字符串

    Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...

    pair:用于在 Java 中创建元组的小包

    标题提到的"pair:用于在 Java 中创建元组的小包"可能是一个专门为Java提供元组支持的开源项目,它简化了在Java中处理两个值的数据结构的需求。 元组是一种轻量级的数据结构,它可以存储多个不同类型的数据,并且不...

    【免费题库】华为OD机试 - 勾股数元组(Java & JS & Python & C & C++).html

    【免费题库】华为OD机试 - 勾股数元组(Java & JS & Python & C & C++).html

    Python -函数的返回值-接收返回元组函数的方式

    Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...

    RSA公钥加密算法Java实现

    RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 这时一个简单的Java实现,在RSA网络安全工具类是比较完整的实现。

    python中的列表与元组的使用

    列表和元组是Python中最常用的数据结构,二者都用于存储一系列的数据,但二者在使用上有明显的区别。 列表(List)是Python中的可变序列类型,这意味着列表中的元素可以被改变,可以动态地进行增加、删除、修改等...

    typedtuples:Java的强类型元组库-不可变和可变的实现

    类型的Tuples Java的强类型元组库安装玛文 &lt; dependency&gt; &lt; groupId&gt;...例如: 计算总和(N),总和(N ^ 2) 可以使用数组来完成此操作,如下所示: int [] result = IntStream . rangeClosed( 1 , 3 )

    测量程序编制 - python 28数据类型:Tuple(元组)-创建.pptx

    在Python编程语言中,元组(Tuple)是一种不可变序列,这意味着一旦创建,就不能更改其内容。元组常用于存储一组有序且不需修改的数据,它们在内存中占用较少的空间,且可以作为字典的键,这是列表所不能做到的。...

    行业分类-设备装置-在消息中传送元组.zip

    在编程语言如Python、C#或Java中,元组被广泛使用。在消息传递中,元组用于封装不同类型的变量,便于一次性传输多个数据项。 2. **行业分类与设备装置**: 在“行业分类-设备装置”上下文中,我们可以理解为不同...

    物件導向程式設計講義-Java

    - **Java编译与执行**:Java源代码经过编译后生成位元组码,这些位元组码由JVM解释执行。这种方式使得Java具有跨平台的能力。 #### Java语法基础 - **程式范例**:Java程序的基本结构通常包含一个公共类(public ...

    Python 元组-特点以及和列表的区别

    Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...

    java php python erlang 千万级内存数据性能比较

    Python,以其简洁的语法和强大的科学计算库而备受青睐,"python_dict_turple_test.py"可能包含了Python使用字典和元组进行性能测试的代码。Python的字典操作通常很快,但由于动态类型和解释执行,对于千万级数据处理...

    Python 元组-元组变量的定义

    Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...

    Python 元组-元组的应用场景

    Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...

Global site tag (gtag.js) - Google Analytics