java中的泛型集合


前面我们使用Collection的时候通过Add方法添加的数据的类型是object类型。无论将什么对象存入collection内,都是object类型。而在取出的时候(get(int index))取出的元素必须要进行强制类型转换,不仅仅繁琐,而且还容易出现异常。而在jdk1.5之后,就引入了泛型,这能有效的解决这个问题。

泛型集合的应用

我们可以测试list
一开始我们使用的是

ArrayList ll=new ArrayList();
		ll.add(123);
		ll.add("sad");
		ll.add(false);
		System.out.println(ll);

那么我们我们可以看到里面的数据有整形,字符串,布尔类型等。在使用的时候我们如果只想要整形,那么可以进行泛型集合。

ArrayList<Integer> ll=new ArrayList();
		ll.add(123);
		ll.add(45);
		ll.add(777);
		System.out.println(ll);

我们可以发现,加入数据的时候只能添加整形了,其他的类型就不可以进行add操作。这就是简单的应用。

下面说的这个方法我以前没接触过。

我们定义一个实体类型 book,定义出属性为T。(常用的是 T E K V )

public class Books<T> {
	private  T  t;
	public Books() {
		super();
	}
	public Books(T t) {
		super();
		this.t = t;
	}
	public T getT() {
		return t;
	}
	public void setT(T t) {
		this.t = t;
	}

其实仔细看也可以是string 或者其他类型的简写。
接下来 编写测试类:

Books<String> books = new Books<String>();
//		books.setT("tom");
//		String t = books.getT();
//		System.out.println(t);

		Books<Integer> books = new Books<Integer>();
		books.setT(89);
		Integer t = books.getT();
		System.out.println(t);

这样写就是没讲类型写死,在测试编写的时候可以灵活的运用,使得程序适应性更强。

开发中的泛型(泛型嵌套)

我们可以将数据存入list。然后定义多个list,并将list存入到hashMap中去。

	 HashMap<String,ArrayList<Members>>> hashMap = new HashMap<String, ArrayList<Members> >();
    //定义第一个list
     ArrayList<Members>  list=new ArrayList<Members>();
		list.add(new Members("tom", 12));
		list.add(new Members("kid",15));
		list.add(new Members("mather", 30));
		//定义第二个list
		ArrayList<Members>  list2=new ArrayList<Members>();
		list2.add(new Members("admin", 12));
		list2.add(new Members("kid",15));
		list2.add(new Members("mather2", 30));
		//存入hashmap
		hashMap.put("father1", list);
		hashMap.put("father2", list2);
		//读出数据。。。
		Set<Entry<String, ArrayList<Members>>> entrySet = hashMap.entrySet();
		Iterator<Entry<String, ArrayList<Members>>> iterator = entrySet.iterator();
		while(iterator.hasNext()) {
			Entry<String, ArrayList<Members>> next = iterator.next();
			String key = next.getKey();
			System.out.println("---");
			System.out.println(key);
			ArrayList<Members> value = next.getValue();
			System.out.println(value);//读出所有的value
			System.out.println(value.get(1).getName());//读出第一个
			}
		}

具体代码的表现形式可以如上面所示。我们也可以一直嵌套下去。就和哪个地区有哪个小区有哪个房子几单元几号房间等等这样的不断进行嵌套。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值