Java中的泛型介绍:
起因:
1. JDK 1.4 以前类型不明确:
① 装入集合的对象被当作 Object 类型对待,从而失去了自己的原有类型;
② 从集合中取出时往往需要转型,效率低下,并且容易产生错误.
解决办法:
2. 解决办法
① 在定义集合的时候,同时定义集合中对象的类型;
② 可以在定义 Collection 的时候指定,也可以在循环时用 Iterator 指定.
好处:
3. 增强程序的可读性与稳定性.
Demo_1:
import java.util.*; class MyName implements Comparable<MyName>{ private int age; public MyName(int age) { this.age = age; } @Override public int compareTo(MyName mn) { if(this.age>mn.age){ return 1; }else if(this.age<mn.age){ return -1; }else { return 0; } } } public class Test { public static void main(String[] args) { ArrayList<String> as = new ArrayList<String>(); as.add("aa"); as.add("bb"); as.add("cc"); as.add("dd"); for(int i=0;i<as.size();i++){ String sa = as.get(i); System.out.print(sa+" "); // 输出:aa bb cc dd } System.out.println(); HashSet<String> hs = new HashSet<String>(); hs.add("a1"); hs.add("a2"); hs.add("a3"); hs.add("a4"); hs.add("a5"); for(Iterator<String> it=hs.iterator();it.hasNext();){ String sh = it.next(); System.out.print(sh+" "); // 输出:a1 a2 a3 a4 a5 } System.out.println(); MyName m1 = new MyName(12); MyName m2 = new MyName(25); System.out.println(m1.compareTo(m2)); // 输出:-1 } }
Demo_2:
import java.util.*; public class Test { public static void main(String[] args) { HashMap<String, Double> mp = new HashMap<String, Double>(); mp.put("one", 112.365); mp.put("two", 2.458); mp.put("three", 126.258); System.out.println(mp.size()); // 输出:3 System.out.println(mp.containsKey("two")); // 输出:true if(mp.containsKey("three")){ Double i = mp.get("three"); // get Value System.out.println(i); // 输出:126.258 } } }