泛型
1)在编译时,由编译器约束放入集合中的类型
2)在运行时,编译器会擦除原泛型类型
3)泛型二边要么都不使用约束,要么二边约束一致类型,同时二边必须使用引用类型
4)为了与JDK1.4兼容,泛型可以一边有约束,一边无约束
思考:不利用中间变量,将二个数交互
5)当一个类中出大量的泛型方式或属性/字段,此时可以将该类作成泛型类
6)如果使用泛型通配符,只能获取与泛型具体类型无关的信息,例如:长度。
7)有二个类,初学者一定要注意:Collections和Arrays
`` public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("liwen"); list.add("jiayou"); show(list);}public static void show(List list) { for(Object obj:list) { String s = (String) obj; System.out.println(s + "\t"); }}` public static void main(String[] args) { Boolean numA = false; Boolean numB = true; System.out.println("numA" + numA); System.out.println("numB" + numB); swap(numA,numB);}//泛型方法public static <T> void swap(T numA,T numB) { T temp = numA; numA = numB; numB = temp; System.out.println("numA" + numA); System.out.println("numB" + numB);}`//泛型类public class Apple<T> {//泛型方式public void buy(T t){ System.out.println("苹果:" + t + "信息");}
}
使用:
Apple<Integer> a1 = new Apple<Integer>(); a1.buy(10); Apple<Double> a2 = new Apple<Double>(); a2.buy(5.5);
通配符
public static void main(String[] args) { List<Boolean> booleanList = new ArrayList<Boolean>(); booleanList.add(true); booleanList.add(false); show(booleanList); } public static void show(List<?> list) { System.out.println("集合长度为:" + list.size()); for(Object o : list){ System.out.println(o); } }
排序:
List<String> stringList = new ArrayList<String>(); stringList.add("one"); stringList.add("two"); stringList.add("three"); System.out.println("倒序前:"); for(String s : stringList){ System.out.print(s+"\t"); } reverse(stringList); System.out.println("\n倒序后:"); for(String s : stringList){ System.out.print(s+"\t"); } } //倒序集合 public static void reverse(List<String> stringList) { //集合非空且至少有2个值 if(stringList!=null && stringList.size()>=2){ Collections.reverse(stringList); } }