泛型一般使用在集合上
语法:
集合<类型>,如List<String> list = new ArrayList<String>();
在list上使用泛型:代码如下
1 package com.泛型; 2 3 4 import java.util.ArrayList; 5 import java.util.Iterator; 6 import java.util.List; 7 8 import org.junit.Test; 9 10 public class ListTest { 11 @Test 12 public void TestList(){ 13 List<String> list = new ArrayList<String>(); 14 list.add("aaa"); 15 list.add("bbb"); 16 list.add("ccc"); 17 18 //遍历集合的三种方式 19 /** 20 * 1、普通for循环 21 */ 22 for(int i = 0;i<list.size();i++){ 23 System.out.println(list.get(i)); 24 } 25 System.out.println("================================="); 26 /** 27 * 2、增强for循环 28 */ 29 for (String string : list) { 30 System.out.println(string); 31 } 32 System.out.println("================================="); 33 /** 34 * 3、迭代器 35 */ 36 Iterator<String> iterator = list.iterator(); 37 while(iterator.hasNext()){ 38 System.out.println(iterator.next()); 39 } 40 41 42 } 43 }
在set上使用泛型,同list,set是无序的、不可重复的。
在map上使用泛型,代码如下:
1 @Test 2 public void mapTest(){ 3 Map<String,String> map = new HashMap<String,String>(); 4 map.put("aaa", "111"); 5 map.put("bbb", "222"); 6 map.put("ccc", "333"); 7 /** 8 * 遍历map集合的第一种方法 9 * 10 */ 11 Set<String> key = map.keySet(); 12 for (String string : key) { 13 String value = map.get(string); 14 System.out.println(string + " "+value); 15 } 16 17 /** 18 * 第二种方法 19 */ 20 Set<Entry<String, String>> set= map.entrySet(); 21 for (Entry<String, String> entry : set) { 22 String keyv = entry.getKey(); 23 String valuev = entry.getValue(); 24 System.out.println(keyv +" "+valuev); 25 } 26 27 }
注意:在泛型里写的是个对象,不能写基本数据类型,写它的包装类。
泛型方法:
1、使用泛型方法需要定义一个类型,使用大写字母表示,通常使用T:这个T表示任意类型
2、这个T写在返回值之前或者void之前
代码如下:
1 package com.泛型; 2 3 import java.util.Arrays; 4 5 import org.junit.Test; 6 7 public class 泛型方法 { 8 public <T> void swap(T [] arr,int a,int b){ 9 T temp = arr [a]; 10 arr [a] = arr [b]; 11 arr [b] = temp; 12 } 13 @Test 14 public void arrTest(){ 15 Integer [] arr = {1,2,3,4,5}; 16 swap(arr, 2, 3); 17 System.out.println(Arrays.toString(arr)); 18 } 19 }