java中的泛型
BasicGeneric.java
import java.util.*;
/*
java中的泛型
*/
public class BasicGeneric {
public static void main(String[] args) {
//Interface List<E>,E为泛型
List<String> c = new ArrayList<String>();
c.add("aaa");
c.add("bbb");
c.add("ccc");
for(int i=0; i<c.size(); i++) {
String s = c.get(i);
System.out.println(s);
}
//Interface Collection<E>,E为泛型
Collection<String> c2 = new HashSet<String>();
c2.add("aaa"); c2.add("bbb"); c2.add("ccc");
//Interface Iterator<E>,E为泛型
for(Iterator<String> it = c2.iterator(); it.hasNext(); ) {
String s = it.next();
System.out.println(s);
}
}
}
//Interface Comparable<T>,T为泛型
class MyName implements Comparable<MyName> {
int age;
public int compareTo(MyName mn) {
if(this.age > mn.age) return 1;
else if(this.age < mn.age) return -1;
else return 0;
}
}
F:\java>javac BasicGeneric.java F:\java>java BasicGeneric aaa bbb ccc aaa ccc bbb F:\java>
可以看到使用泛型后,编译时没有出现警告
注: T.java使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
使用泛型和自动打包解包
TestMap2.java
import java.util.*;
public class TestMap2 {
public static void main(String args[]) {
Map<String, Integer> m1 = new HashMap<String , Integer>();
m1.put("one", 1);
m1.put("two", 2);
m1.put("three", 3);
System.out.println(m1.size());//3
System.out.println(m1.containsKey("one"));//true
if(m1.containsKey("two")) {
//int i = ((Integer)m1.get("two")).intValue();
//使用泛型后,不需要指定Integer进行强制转换
int i = m1.get("two");
System.out.println(i);//2
}
}
}
F:\java>javac TestMap2.java F:\java>java TestMap2 3 true 2 F:\java>
TestArgsWords2.java
import java.util.*;
public class TestArgsWords2 {
private static final int ONE = 1;
public static void main(String args[]) {
//使用泛型
Map<String, Integer> m = new HashMap<String, Integer>();
for (int i = 0; i < args.length; i++) {
if(!m.containsKey(args[i])) {
m.put(args[i], ONE);
}
else {
int freq = m.get(args[i]);
m.put(args[i], freq + 1);
}
}
System.out.println
(m.size() + " distinct words detected:");
System.out.println(m);
}
}
F:\java>javac TestArgsWords2.java F:\java>java TestArgsWords2 0 distinct words detected: {} F:\java>java TestArgsWords2 aa bb aa cc bb dd ss cc 5 distinct words detected: {aa=2, bb=2, cc=2, dd=1, ss=1} F:\java>