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
}
}
}