您的位置:首页 > 编程语言 > Java开发

看视频自学Java泛型

2017-03-20 12:43 204 查看
1.泛型

代码:

/**
* 泛型
* @author Boom
*
*/
public class Demo1 {

public static void main(String[] args) {
List list = new ArrayList();
list.add("aaa");
Integer i = (Integer) list.get(0);

//区别,使用泛型避免转换错误
List<String> list1 =new ArrayList<String>();
list1.add("aaaa");
list1.get(0);
}
}
=============================================================

2.用传统方法和for的增强式遍历使用泛型的集合或数组 
    低级程序员使用高级程序员的代码

代码:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.hamcrest.core.Is;
import org.junit.Test;
/**
* 泛型
* @author Boom
*
*/
public class Demo2 {

@Test
public void test1(){

List<String> list =new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");

//传统
Iterator it = list.iterator();
while(it.hasNext()){
String value =(String) it.next();
System.out.println(value);
}
//增强for
for(String s : list){
System.out.println(s);
}
}

@Test
public void test2(){

//模拟数据
Map<Integer, String> map = new LinkedHashMap<Integer,String>();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3, "ccc");

//传统 keyset 或者 entryset
Set<Map.Entry<Integer, String>> set = map.entrySet();
Iterator<Map.Entry<Integer, String>> it = set.iterator();
while(it.hasNext()){
Map.Entry<Integer, String> entry = it.next();
int key =entry.getKey();
String value =entry.getValue();
System.out.println(key+"="+value);
}

//增强for
for(Map.Entry<Integer, String> entry:map.entrySet()){
int key =entry.getKey();
String value =entry.getValue();
System.out.println(key+"="+value);
}

}

/**
* 泛型,低级程序员 能 使用高级程序员代码
*/

@Test
public void test3(){
//用泛型时,如果两天都使用到泛型,两边必须要一样

// ArrayList<Object> list = new ArrayList<String>();
// ArrayList<String> list = new ArrayList<String>();

//相当于低级程序员能使用高级程序员代码
ArrayList<String> list = new ArrayList();
ArrayList list1 = new ArrayList<String>();
}
}

=============================================================

3.泛型的擦除 (就是简写)
 

/**
* 泛型的擦除
* @author Boom
*
*/
public class Demo3 {

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
}
}
/**
* 泛型的擦除
* @author Boom
*
*/
public class Demo4 {

public static void main(String[] args) {
ArrayList list = new ArrayList();
}
}


===============================================================
4.自定义泛型方法 (<T>是对参数的声明)

代码:

/**
* 自定义泛型方法
* @author Boom
* @param <V>
*
*/
public class Demo5 {

public void testa(){
a("aaaa");
}

//<T> 是声明
public <T> T a(T t){
return null;
}

//可以定义多个泛型
public <T,E,K,V> void b(T t,E e,K k,V v){

}
}
=================================================================

5.自定义泛型--泛型类和反射泛型  (其实,就是在4的基础上把方法前的声明迁移到类上)
/**
* 自定义泛型--泛型类和反射泛型
* @author Boom
* @param <V>
*
*/
//可以把方法上的声明放到类上
public class Demo6<T,E,K,V> {

public void testa(){
//a("aaaa");
}

public T a(T t){
return null;
}

public void b(T t,E e,K k,V v){

}

//静态方法
public static <T> void c(T t){

}

}

=================================================================

6.用泛型自定义个数组内元素互换的泛型方法
public class Demo7 {

//
a681
编写一个泛型方法,实现指定位置上的数组元素的交换
public <T> void swap(T arr[], int pos1, int pos2) {
T temp = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = temp;
}

// 编写一个泛型方法,接收一个任意数组,并颠倒数组中的所有元素
public <T> void reverse(T arr[]) {
int start = 0;
int end = arr.length - 1;
while (true) {
if (start >= end) {
break;
}
T temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
}


总结:这个在架构方面用的比较多,就相当于低级程序员用高级程序员的代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: