前面我们使用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());//读出第一个
}
}
具体代码的表现形式可以如上面所示。我们也可以一直嵌套下去。就和哪个地区有哪个小区有哪个房子几单元几号房间等等这样的不断进行嵌套。