看视频自学Java泛型

来源:互联网 发布:网络嗅探器5.5.0 编辑:程序博客网 时间:2024/06/10 02:01

1.泛型

代码:

/** * 泛型 * @author Boom * */public class Demo1 {public static void main(String[] args) {List list = new ArrayList();list.add("aaa");Integer i = (Integer) list.get(0);//区别,使用泛型避免转换错误List<String> list1 =new ArrayList<String>();list1.add("aaaa");list1.get(0);}}

=============================================================

2.用传统方法和for的增强式遍历使用泛型的集合或数组 

    低级程序员使用高级程序员的代码

代码:

import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Set;import org.hamcrest.core.Is;import org.junit.Test;/** * 泛型 * @author Boom * */public class Demo2 {@Testpublic void test1(){List<String> list =new ArrayList<String>();list.add("aa");list.add("bb");list.add("cc");//传统Iterator it = list.iterator();while(it.hasNext()){String value =(String) it.next();System.out.println(value);}//增强forfor(String s : list){System.out.println(s);}}@Testpublic void test2(){//模拟数据Map<Integer, String> map = new LinkedHashMap<Integer,String>(); map.put(1, "aaa");map.put(2, "bbb");map.put(3, "ccc");//传统 keyset 或者 entrysetSet<Map.Entry<Integer, String>> set = map.entrySet();Iterator<Map.Entry<Integer, String>> it = set.iterator();while(it.hasNext()){Map.Entry<Integer, String> entry = it.next();int key =entry.getKey();String value =entry.getValue();System.out.println(key+"="+value);}//增强forfor(Map.Entry<Integer, String> entry:map.entrySet()){int key =entry.getKey();String value =entry.getValue();System.out.println(key+"="+value);}}/** * 泛型,低级程序员  能 使用高级程序员代码 */@Testpublic void test3(){//用泛型时,如果两天都使用到泛型,两边必须要一样// ArrayList<Object> list = new  ArrayList<String>();// ArrayList<String> list = new  ArrayList<String>();//相当于低级程序员能使用高级程序员代码ArrayList<String> list = new  ArrayList();ArrayList list1 = new  ArrayList<String>();}}

=============================================================

3.泛型的擦除 (就是简写)

 

/** * 泛型的擦除 * @author Boom * */public class Demo3 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<String>();}}

/** * 泛型的擦除 * @author Boom * */public class Demo4 {public static void main(String[] args) {ArrayList list = new ArrayList();}}

===============================================================

4.自定义泛型方法 (<T>是对参数的声明)

代码:

/** * 自定义泛型方法 * @author Boom * @param <V> * */public class Demo5 {public void testa(){a("aaaa");}//<T> 是声明public <T> T a(T t){return null;}//可以定义多个泛型public <T,E,K,V> void b(T t,E e,K k,V v){}}

=================================================================

5.自定义泛型--泛型类和反射泛型  (其实,就是在4的基础上把方法前的声明迁移到类上)

/** * 自定义泛型--泛型类和反射泛型 * @author Boom * @param <V> * *///可以把方法上的声明放到类上public class Demo6<T,E,K,V> {public void testa(){//a("aaaa");}public T a(T t){return null;}public  void b(T t,E e,K k,V v){}//静态方法public static <T> void c(T t){}}

=================================================================

6.用泛型自定义个数组内元素互换的泛型方法

public class Demo7 {// 编写一个泛型方法,实现指定位置上的数组元素的交换public <T> void swap(T arr[], int pos1, int pos2) {T temp = arr[pos1];arr[pos1] = arr[pos2];arr[pos2] = temp;}// 编写一个泛型方法,接收一个任意数组,并颠倒数组中的所有元素public <T> void reverse(T arr[]) {int start = 0;int end = arr.length - 1;while (true) {if (start >= end) {break;}T temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}}}


总结:这个在架构方面用的比较多,就相当于低级程序员用高级程序员的代码。




0 0
原创粉丝点击