泛型(generic)颠倒数组中的所有元素
我的java基础一直不是很好,最近抽出时间,来强化一下自己的基础知识,基本功扎实,才能走的更踏实。
对于Map集合,我们要熟练的使用增强额for循环机制(for each),其中entrySet method是很重要的。
@Test
public void test1(){
Map<String, Integer> map = new HashMap<String,Integer>();
map.put("aa", 1);
map.put("bb", 2);
Set<Entry<String,Integer>> set = map.entrySet();
for (Entry<String, Integer> entry : set) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
再者就是在类上定义的泛型,只能对类的非静态成员变量有效,对非静态的无效。
为什么对静态成员无效?
我们只有在new这个类的实例的时候,才会给它指出泛型的具体类型,而静态的成员变量,我们可以直接类名.xxx就调用了,根本不会知道它的类型是什么。
/**
* 编写一个泛型方法,交换数组上的任意两个位置上的元素
*/
private static <T> void swap(T[] arr, int pos1, int pos2) {
T temp = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = temp;
}
/**
* 编写一个泛型方法,接收一个任意数组,并颠倒数组中的所有元素
* @param arr
*/
private static <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 --;
}
}