一,元组的定义:

看了很多博客关于这方面的定义,个人觉得元组的使用就是通过泛型定义一个类,然后去保存多个类型属性。所以可以认为元组完全是基于泛型的。

在使用元组的时候,我看到一个例子关于分页时,sql语句之后得到存储的数据,当前页,每页的大小,总共页数,问题来了,其实你已经查出来了总条数,但是因为你的返回内容是一个对象无法再多返回一个list类型了,你需要重新写一个方法来再查一次返回一个List类型。其实这个例子我觉得是不够贴切的,你可以定义一个类,拥有List属性,拥有存入一个任意对象的属性,通过返回这个对象其实就可以实现了。 但是其实说道这里,在要返回的所有类型属性外包一层对象然后返回这个对象,其实就是作为元组的实现定义。

二,元组的使用:

对于元组的使用,通过泛型创建一个类,这样的代码复用性很强。从某些意义上来讲元组是个“容器”。对于这个“容器”,你可能会问,它不比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);
	}
}

  输出结果:

java中有元组吗 java元组类型_java元组

3,元组的优点:

元祖的优点其实还是可以防止代码的冗余,不用写更多的方法,可以通过一个返回多个我想要的类型属性。