泛型
泛型的简介
* 一般使用在集合里面
比如现在把一个字符串类型的值放入到集合里面,这个时候这个值放入到集合之后,失去了本身的类型,只能是
object类型,这个时候,想要对这个值进行类型转换,很容易出现类型转换错误,用泛型来解决这个问题
* 在集合上如何使用泛型
- 常用集合:list、set、map
- 泛型语法:集合<数据类型> 例如:List<String>
* 在泛型里面写的是一个对象,String不能写节本类型
** 所以要写基本数据类型的包装类 *******
- int Integer
- char Character
- 其他六中将首字母大写就是其对应的包装类
* 在list上面使用泛型
list的三种实现 ArrayList linkedList Vector 的区别
public void testList(){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
//遍历集合:普通for 迭代器 增强for
}
* 在set上面使用泛型
public void testSet(){
Set<String> set = new HashSet<String>();
set.add("aaa");
set.add("bbb");
set.add("ccc");
//遍历集合:迭代器 增强for
}
* 在map上面使用泛型
public void testMap(){
Map<String,String> map = new HashMap<String,String>();
map.put("aaa","111");
map.put("bbb","222");
map.put("ccc","333");
//遍历方式
获取所有的key,通过key得到value,使用get方法
获取key和value的关系
//第一种方式
Set<String> sets = map.keySet();
for(String key : sets){
String value = map.get(key);
System.out.println(key+":"+value);
}
//第二种方法
set<Entry<String,String>> sets1 = map.entrySet();
for(Entry<String,String> entry : sets1){
String keyv = entry.getKey();
String valuev = entry.getValue();
System.out.println(keyv+":"+valuev);
}
}
* 泛型擦除
首先泛型只出现在源代码阶段,当编译之后泛型不存在
练习
实现一个泛型方法,接收任意类型的数组,颠倒数组中的所有元素
public stativ <T> void reverse(T[] arr){
T temp = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = temp;
}
* 泛型使用在方法上
** 定义一个数组,实现指定位置上数组元素的交换
** 方法逻辑相同,只是数据类型不同,这个时候使用泛型方法
使用泛型方法 需要定义一个类型 使用大写字母表示 T :这个T表示任意类型
写在返回值之前 void之前 <T>
public class Test(){
public static void main(String[] args){
Integer arr[] = {111,222,333,444};
System.out.println(Arrays.toString(arr));
swap(arr[],1,3);
System.out.println(Arrays.toString(arr));
}
public static <T>void swap(T[],int a,int b){
T temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
}

浙公网安备 33010602011771号