/**
* 泛形
* @author zyengogo
*/
public class Demo1 {
/**
* @param args
*/
public static void main(String[] args) {
/**
* 泛形的使用
*
* 泛形可以避免在取值的时候,进行强制装换,是程序可读性强
*/
//指定了,这个list是String类型的
List<String> list=new ArrayList<String>();
//这样的list中,只能是String的类型
list.add("加入泛型11111");
list.add("加入泛型22222");
list.add("加入泛型33333");
/**
* 取值方式一
* 迭代器
*/
Iterator<String> it= list.iterator();
while(it.hasNext()){
String value = it.next();
System.out.println(value);
}
/**
* 取值方式二
* 增加for
*/
for(String s: list){
System.out.println(s);
}
System.out.println(list.get(0));
}
@Test
public void Test(){
//Map<Integer, String> map=new HashMap<Integer, String>();
//LinkedHashMap..这个有顺序
Map<Integer, String> map=new LinkedHashMap<Integer, String>();
map.put(1, "1111");
map.put(2, "2222");
map.put(3, "333");
map.put(4, "444");
/**
*传统取值
*keyset--map.keySet();
*entryset--map.entrySet();
*/
//Set<Map,Entry<Integer,String>> set= map.entrySet();
/**
* 增强for
*/
for(Map.Entry<Integer, String> entry:map.entrySet()){
int key=entry.getKey();
String value=entry.getValue();
System.out.println(key +" =" + value);
}
}
public void Test2(){
//用泛形时,如果两边都用了,两边必须一样;
//泛形的类,便于后的class是不带泛形的class,主要是为了程序的执行效率
List<String> list=new ArrayList<String>();
//List<Object> list1=new ArrayList<String>();
//List<String> list2=new ArrayList<Object>();
List<String> list3=new ArrayList();
List list4=new ArrayList<String>();
}
}
/**
*
* @author zyengogo
*
*/
public class Demo2 {
//交换两个指定数组位置
public<T> void test(T arr[],int pot1,int pot2){
T temp=arr[pot1];
arr[pot1]=arr[pot2];
arr[pot2]= temp;
}
//编写一个泛形类型方法,接受任意数组,并颠覆数组中所有元素
public<T> void reverse(T arr[]){
int start = 0;
int end = arr.length-1;
while(true){
if(start >= end){
break;
}
T temp=arr[0];
arr[0]=arr[end];
arr[end]= temp;
start ++;
end --;
}
}
}