二维数组画图W和M 简单认识下泛型:任意类型数据集合反转

将泛型定义在类上 作用在方法上 实例后可使用任意指定的引用类型数组作为调用参数
import org.junit.Test;

import java.util.Arrays;

@SuppressWarnings("all")
public class Generic<T> {//在类上定义声明泛型 作用全局非静态成员
    public <T, E, K> void show1(T o, E e, K d) {//声明<T,E, K> 自定义泛型
        System.out.println(o.toString()+e+d);
    }

    @Test
    public void test() {
        show1("我", "爱", "你");
        Integer[] list={2,13,14,1,43};
        Generic<Integer> generic=new Generic<>();
        generic.swap(list);
    }

    public static  <T> void swap(T[] arr) {//任意类型数组 ,Stirng Integer....等
        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--;
        }
        System.out.println(Arrays.toString(arr));
    }

}

二维数组和数组概念差不多 不过是一起作用自平面的俩个方向 x代表数组行 y代表数组列

画出W 与 M

二维数组画图W和M 简单认识下泛型:任意类型数据集合反转

@Test
public void printM() {
    int[][] arr = new int[3][9];//%3适合轮播图路径 用在这里不太行 三行九列
    int x = 2;
    int y = 0;

    boolean flag = true;
    for (int i = 1; i <= 9; i++) {
        arr[x][y] = i;
        y++;
        if (flag) {
            x--;
        }
        if (!flag) {
            x++;
        }
        if (x < 0) {
            flag = false;
            x += 2;
        }
        if (x > 2) {
            flag = true;
            x -= 2;
        }
    }

    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[0].length; j++) {
            if (arr[i][j] == 0) System.out.print(" ");
            else {
                System.out.print(arr[i][j]);
            }

        }
        System.out.println();
    }
    System.out.println();
    int[][] arr1 = new int[3][9];
    int x1 = 0;
    int y1 = 0;
    boolean flag1 = true;
    for (int i = 1; i <= 9; i++) {
        arr1[x1][y1] = i;//赋值九次 123456789
        if (flag1) x1++;
        if (!flag1) x1--;
        if (x1 == 3) {
            x1 -= 2;
            flag1 = false;//从3回退到1 需要退俩格 改变状态让其走另一个分支!!for (true false)
        }
        if (x1 == -1) {
            x1 += 2;
            flag1 = true;
        }
        y1++;
    }
    for (int i = 0; i < arr1.length; i++) {
        for (int j = 0; j < arr1[0].length; j++) {
            if (arr1[i][j] == 0) System.out.print(" ");
            else {
                System.out.print(arr1[i][j]);
            }

        }
        System.out.println();//
    }
}

二维数组画图W和M 简单认识下泛型:任意类型数据集合反转

总结画图比想象好理解的多 抓住数组坐标的规律以及应该循环的次数 Y轴++X++/--轴循环定位每次坐标 

输出时 要俩层循环 不难发现 外层行数为x的长度内层y遍历次数是每一个任意内嵌数组[0]的长度 多了稍复杂也没必要太纠结