泛型

泛型的简介

 

* 一般使用在集合里面
  比如现在把一个字符串类型的值放入到集合里面,这个时候这个值放入到集合之后,失去了本身的类型,只能是
  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;
  }
  }

posted @ 2018-07-23 15:02  cmlx  阅读(135)  评论(0)    收藏  举报