Generic 泛型

jdk5 的泛型允許程序員在編寫集合代碼時,就限制集合的處理類型,從而把原來程序運行時可能發生問題,轉變爲編譯時的問題,以此提高程序的可讀性和穩定性

泛型 泛形類型須爲引用類型,不能是基本數據類型

泛型是提供給javac編譯器使用的,它用於限定集合的輸入類型,讓編譯器在源代碼級別上,即擋住向集合中插入非法數據。但編譯器編譯完帶有泛形的java程序後,生成的class文件中將不再帶有泛形信息,以此使程序運行效率不受到影響,這個過程稱之爲“擦除”。

List<String> list = new ArrayList<String>();
  list.add("aaa");
  list.add("bbb");
  list.add("ccc");
  
  Iterator<String> it = list.iterator();
  while(it.hasNext()){
   String value = it.next();
   System.out.println(value);
  }
  
  for(String value : list){
   System.out.println(value);
  }

 

 Map<Integer,String> map = new HashMap<Integer,String>();
  map.put(1, "aaa");
  map.put(2, "bbb");
  map.put(3, "ccc");
  
  //1.用keyset
  Set<Integer> set = map.keySet();
  Iterator<Integer> it = set.iterator();
  while(it.hasNext()){
   Integer key = it.next();
   String value = map.get(key);
   System.out.println(key + "=" + value);
  }
  
  //2.用entryset
  Set<Map.Entry<Integer, String>> set1 = map.entrySet();
  Iterator<Map.Entry<Integer, String>> it1 = set1.iterator();
  while(it1.hasNext()){
   Map.Entry<Integer, String> me = it1.next();
   int key = me.getKey();
   String value = me.getValue();
   System.out.println(key + "=" + value);
  }
  
  //3.用foreach
  for(Map.Entry<Integer, String> me : map.entrySet()){
   int key = me.getKey();
   String value = me.getValue();
   System.out.println(key + "=" + value);
  }

 

自定義 泛型:

Java程序中的普通方法、構造方法和靜態方法中都可以使用泛型。方法使用泛形前,必須對泛形進行聲明,語法:<T> ,T可以是任意字母,但通常必須要大寫。<T>通常需放在方法的返回值聲明之前。例如:
 public static <T> void doxx(T t);
 

 

聲明泛形的注意事項:類上面聲明的泛形只對類的非靜態態成員有效,類上面的靜態成員使用泛形,它們需單獨聲明

 

 

 

//編寫一個泛形方法,實現數組元素的交換。
 public <T> void swap(T arr[],int index1,int index2){
  T temp = arr[index1];
  arr[index1] = arr[index2];
  arr[index2] = temp;
 }

 

 

 

 //編寫一個泛形方法,接收一個任意數組,並顛倒數組中的所有元素。
 public <T> void reverse(T arr[]){
  
  int start = 0;
  int end = arr.length-1;
  
  for(;;){
   if(start>=end){
    break;
   }
   T temp = arr[start];
   arr[start] = arr[end];
   arr[end] = temp;
   
   
   start++;
   end--;
  }
 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章