泛型方法和泛型类的使用(学习笔记)

1. 泛型的简介

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。为什么要是用泛型呢??泛型一半是用在集合上,比如现在吧一个字符串类型的值放入到集合里面,这个时候,这个值放入到集合之后,失去本身的类型,只能说是object类型,这个时候,比如想要对这个值进行类型转换,很容易出现转换错误,怎么解决这个问题呢,可以使用泛型来解决。

2在集合上如何使用泛型

*常用集合 list set map
*泛型语法 集合名<String> 比如List<String>
*在泛型里面写是一个对象,String,不能写基本的数据类型,比如int
**写基本的数据类型对应包装类

              byte --Byte
              short--Short
              int--Integer  
              
              long--Long
              
              float--Float
              double--Double
              
              char--Character
              
              boolean--Boolean

*list上使用泛型
list的三种实现ArrayList linkedList Vector
代码如下:

@Test
	public void Testdemo(){
		//泛型使用在list上
		ArrayList<String> list = new ArrayList<String>();
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		//遍历数组
		//增强for循环
		for (String string : list) {
			//string 为每一个元素
			System.out.println(string);
		}
		System.out.println("================");
		
		//for循环
		for (int i = 0; i < list.size(); i++) {
			String s = list.get(i);
			System.out.println(s);
		}
		System.out.println("================");
		//迭代器遍历数组
		Iterator<String> itlist = list.iterator();
		while(itlist.hasNext()){
			System.out.println(itlist.next());
		}	
	}

在set上使用泛型

@Test
	public void SetDemo(){
		
		//两种遍历方式,一种是增强for循环,一种是迭代器
		//泛型使用在set上
		//set的特点是不能有重复,而且排列无序
		Set<String>hashset = new HashSet<>();
		hashset.add("qqq");
		hashset.add("www");
		hashset.add("eee");
		hashset.add("qqq");
		//遍历数组
		//增强for循环
		System.out.println("#############");
		for (String string : hashset) {
			System.out.println(string);
		}
		System.out.println("##############");
		
		//迭代器遍历数组
		Iterator<String>setit = hashset.iterator();
		while(setit.hasNext()){
			System.out.println(setit.next());
		}
		
	}

在map上使用泛型

@Test
	public void MapDemo() {
		Map<String, String> map = new HashMap<String, String>();
		map.put("aaa", "111");
		map.put("bbb", "222");
		map.put("ccc", "333");

		// 得到所有key
		Set<String> keys = map.keySet();
		for (String key : keys) {
			String value = map.get(key);
			System.out.println(key + ":" + value);
		}
		// 林外一种方法得到key和value的值
		System.out.println("=========");
		// 得到KEY和value的关系
		Set<Entry<String, String>> sets1 = map.entrySet();
		// 遍历sets1
		for (Entry<String, String> entry : sets1) {
			String keyv = entry.getKey();
			String valuev = entry.getValue();
			System.out.println(keyv + ":" + valuev);
		}

	}

3.使用泛型方法需要定义一个类型

*使用大写字母表示T:这个T表示任意的类型
*写在 返回值之前也就是void之前
*表示定义了一个类型,这个类型是T
在下面就可以使用这个类型T了

public static <T> void swap1(T[] arr,int a,int b){
		T temp = arr[a];
		arr[a] = arr[b];
		arr[b] = temp;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值