本文共 1963 字,大约阅读时间需要 6 分钟。
集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的 对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来 解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于 这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个 参数,这个类型参数叫做泛型。Collection,List,ArrayList 这个就 是类型参数,即泛型
List list = new ArrayList();//需求:存放学生的成绩list.add(79);list.add(89);list.add(67);list.add(59);//问题一:类型不安全list.add("AA");for( Object obj : list){ //问题二:强转时,可能出现ClassCastException int score = (Integer)obj; System.out.println(score);}
图示:
Listlist = new ArrayList (); //List list = new ArrayList<>();//后面一项省略不写也可以 list.add(79); list.add(89); list.add(67); list.add(59); //编译时,就会进行类型检查,保证数据的安全 //list.add("AA");编译不通过 //方式一:// for(Integer obj : list){ // //避免了强转操作// int score = obj;// System.out.println(score);// } //方式二: Iterator iterator = list.iterator(); while(iterator.hasNext()){ int score = iterator.next(); System.out.println(score); }
图示:
// Mapmap = new HashMap (); //jdk7新特性:类型推断 Map map = new HashMap<>(); map.put("AA",90); map.put("DD",78); map.put("LL",67); map.put("OO",98); map.put("PP",79); // map.put(78,"90"); Set > set = map.entrySet(); //泛型的嵌套 Iterator > iterator = set.iterator(); while(iterator.hasNext()){ Map.Entry entry = iterator.next(); String key = entry.getKey(); Integer value = entry.getValue(); System.out.println(key + "--->" + value); }}
在集合中使用泛型:
总结:转载地址:http://yvuki.baihongyu.com/