学校网站建设设想最新发布的最新
一,元组的定义:
看了很多博客关于这方面的定义,个人觉得元组的使用就是通过泛型定义一个类,然后去保存多个类型属性。所以可以认为元组完全是基于泛型的。
在使用元组的时候,我看到一个例子关于分页时,sql语句之后得到存储的数据,当前页,每页的大小,总共页数,问题来了,其实你已经查出来了总条数,但是因为你的返回内容是一个对象无法再多返回一个list类型了,你需要重新写一个方法来再查一次返回一个List类型。其实这个例子我觉得是不够贴切的,你可以定义一个类,拥有List属性,拥有存入一个任意对象的属性,通过返回这个对象其实就可以实现了。 但是其实说道这里,在要返回的所有类型属性外包一层对象然后返回这个对象,其实就是作为元组的实现定义。
<以上个人观点。欢迎补充留言讨论>
(比较官方的)元组的定义,和<<java编程思想>>中差不多:https://www.cnblogs.com/aspwebchh/p/6645732.html
https://blog.csdn.net/u013412772/article/details/74298257
二,元组的使用:
对于元组的使用,通过泛型创建一个类,这样的代码复用性很强。从某些意义上来讲元组是个“容器”。对于这个“容器”,你可能会问,它不比Collection,关于“容器”的大小,怎么解决呢,通常的解决方式是定义一个底层只有二元的元组。通过继承的方式改变元组的大小。正是因为这样,它的复用性很强。
/*** 定义二元元祖* @author Administrator** @param <A>* @param <B>*/
public class MyTwoTuple<A,B> {public final A first;public final B second;public MyTwoTuple(A a,B b){this.first = a;this.second = b;}public String toString(){return first + "-----/n" + second;}}
继承定义三元元组:
/*** 定义三元元祖* @author Administrator**/
public class MyThreeTuple<A,B,C> extends MyTwoTuple<A, B>{public final C third;public MyThreeTuple(A a, B b,C c) {super(a, b);this.third = c;}public String toString(){return first +"----/n" + second+"----/n"+ third;}}
元组实现,我这里是通过静态的方法。<util类式的写法>
public class MyTupleTest {/*** 实现元祖*/public static <A,B> MyTwoTuple<A,B> getMyTwoTuple(A a,B b){return new MyTwoTuple<A,B>(a,b);}public static <A,B,C> MyThreeTuple<A,B,C> getMyThreeTyple(A a,B b,C c){return new MyThreeTuple<A,B,C>(a,b,c);}}
public class MyTupleController {/*** 具体实现*/public static void main(String[] args) {Dog d = new Dog();Cat c = new Cat();List<String> list = new ArrayList<String>();list.add("i'm a java player");Map<String,Object> map = new HashMap<String,Object>();map.put("1","heheh");MyThreeTuple mtt = MyTupleTest.getMyThreeTyple(d, c, list);MyThreeTuple mtt2 = MyTupleTest.getMyThreeTyple(list, c, d);MyThreeTuple mtt3 = MyTupleTest.getMyThreeTyple(list, c,map);System.out.println(mtt.third);System.out.println(mtt2.first);System.out.println(mtt3.first);System.out.println(mtt3.third);}
}
输出结果:
3,元组的优点:
元祖的优点其实还是可以防止代码的冗余,不用写更多的方法,可以通过一个返回多个我想要的类型属性。
以下的内容我觉得这些博客写的 挺好的,可以去看一下:
元组作为参数:https://blog.csdn.net/u013412772/article/details/74298257
元组的分页代码实例:http://www.cnblogs.com/davidwang456/p/4514659.html