泛型笔记

本文深入讲解Java泛型的概念及其在代码中的应用。介绍泛型如何提高类型安全性并简化代码,包括泛型类、接口和方法的创建。演示了如何使用泛型进行集合操作及元素交换等常见编程任务。
泛型概述:
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
使用迭代器迭代泛型集合中的元素
@Test
public void test1() {
List<String> list = new ArrayList<String>();

list.add("adc");
list.add("def");
list.add("cde");

Iterator<String> it = list.iterator();

while (it.hasNext()) {
String value = it.next();
System.out.println(value);
}
//使用增强for循环迭代泛形集合中的元素。
for(String value:list){
System.out.println(value);
}
3.存取HashMap中的元素
@Test
public void test2() {
Map<Integer, String> map = new HashMap<Integer, String>();

map.put(1, "redarmy");
map.put(2, "mj");
map.put(3, "xiaoshenyang");

Set<Map.Entry<Integer, String>> entries = map.entrySet();

for (Map.Entry<Integer, String> entry : entries) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}

4.Java程序中的普通方法、构造方法和静态方法中都可以使用泛型。方法使用泛形前,必须对泛形进行声明,语法:<T> ,T可以是任意字母,但通常必须要大写。<T>通常需放在方法的返回值声明之前。
public static <T> void doxx(T t);
例://先声明后使用
public <T> void test1(T l){
}
//静态方法上声明泛型
public static <T> void test2(T l){
}
//在有返回值的方法上声明泛型
public <T> int test3(T l){ //应用的对象
return 0;
}

在类上可以定义多个泛型
例:public class Demo03<T,E> {

public void test1(T entity){}
public List<T> test2(){
return null;
}
}
6.在类上声明的泛型不能够用在static修饰的方法上
public static <TT> void test2(TT l){ //应用的对象
}
编写一个泛型的方法实现元素的互换
public static <T> void test1(T arr[],int i,int j){
T temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
public static void main(String[] args) {
//T是引用型数据类型所以要用Integer
Integer arr[]={1,2,3,4,5};
test1(arr,2,3);
for(int ar2:arr){
System.out.print(ar2+"");
}
}
8.编写一个泛型方法让所有元素倒序排列
public static <T> void test2(T arr[]){
int startindex=0;
int endindex=arr.length-1;
for(;;){
if(endindex<=startindex){
break;
}
T temp=arr[startindex];
arr[startindex]=arr[endindex];
arr[endindex]=temp;
startindex++;
endindex--;
}
}
public static void main(String[] args) {
Integer arr[]={1,2,3,4,5};
test2(arr);
for(int ar:arr){
System.out.print(ar+"");
}
testChange();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值