使用泛型翻转多种数组

import java.util.*; 
import java.lang.reflect.Array; 
public class Reverse {
	public static void main(String[] args) {
		int a[] = new int[]{0,1,2,3,4,5,6,7};
		//reverseInt(a);
		System.out.println("Start reverse int[]:");
		reverse(a);
		System.out.println("\r\n");
		
		String[] b = new String[]{"hello","world",};
		System.out.println("Start reverse String[]:");
		reverse(b);
		System.out.println("\r\n");

		char[] c = new char[]{'a','b','c','d','e'};
		System.out.println("Start reverse char[]:");
		reverse(c);
		System.out.println("\r\n");
	}
	public static int reverseInt(int[] array){
		if(array == null) return -1;
		int N = array.length;

		String before = "";
		for(int i=0;i<N;i++){
			before += array[i]+"----";
		}
		System.out.println("Before:"+before);
		
		for(int j = 0;j<N/2;j++){
			int temp = array[N-j-1];
			array[N-j-1] = array[j];
			array[j] = temp;
		}

		String after = "";
		for(int k = 0;k<N;k++){
			after += array[k]+"----";
		}
		System.out.println("After:"+after);
		return 0;
	}

	public static <T> T reverse(T array){
		int N = Array.getLength(array);
		String before = "";
		for(int i=0;i<N;i++){
			before += Array.get(array,i)+" ";
		}
		System.out.println("Before:"+"\r\n"+before);

		Class<?> type = array.getClass().getComponentType();
		Object result = Array.newInstance(type,N);
		System.arraycopy(array,0,result,0,N);

		Object temp;
		for(int i  = 0;i < N/2;i++){
			temp = Array.get(result,i);
			Array.set(result,i,Array.get(result,N-i-1));
			Array.set(result,N-i-1,temp);
		}

		String after = "";
		for(int j = 0; j < N; j++){
			after += Array.get(result,j) + " ";
		}
		System.out.println("use T after:" + "\r\n"+after);
		return (T)result;
	}
}

 

posted @ 2015-12-08 22:03  桃源仙居  阅读(94)  评论(0)    收藏  举报