A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

分析以下需求,并用代码实现:
        (1)编写一个泛形方法,实现指定位置数组元素的交换
        (2)编写一个泛形方法,接收一个任意数组,并反转数组中的所有元素

3 个回复

倒序浏览
本帖最后由 cat73 于 2016-7-8 17:01 编辑

泛型不支持基础数据类型,你可以考虑通过重载实现支持基础数据类型。
  1.     public <T> void flip(T[] array) {
  2.         int i = 0;
  3.         int j = array.length - 1;
  4.         while(i < j) {
  5.             swap(array, i++, j--);
  6.         }
  7.     }
  8.    
  9.     public <T> void swap(T[] array, int i, int j) {
  10.         T t = array[i];
  11.         array[i] = array[j];
  12.         array[j] = t;
  13.     }
复制代码
回复 使用道具 举报
好复杂,好复杂啊,好复杂啊啊啊啊啊啊啊啊
回复 使用道具 举报
  1. public static <T> T[] swap (T[] list, int p1, int p2) throws ArrayIndexOutOfBoundsException{
  2.         if (p1 < 0 || p1 > list.length - 1) {
  3.             throw new ArrayIndexOutOfBoundsException ("p1 下标越界");
  4.         }
  5.         if (p2 < 0 || p2 > list.length - 1) {
  6.             throw new ArrayIndexOutOfBoundsException ("p2 下标越界");
  7.         }
  8.         T temp = list[p1];
  9.         list[p1] = list[p2];
  10.         list[p2] = temp;
  11.         return list;
  12.     }
  13.     public static <T> T[] inversionArray (T[] arr){
  14.         T temp;
  15.         int n;
  16.         for (int i = 0; i < arr.length / 2; i++) {//每次循环交换前后相对位置的2元素
  17.             n = arr.length-i-1;
  18.             temp = arr[i];
  19.             arr[i] = arr[n];
  20.             arr[n] = temp;
  21.         }
  22.             return arr;
  23.     }
复制代码


未做严格测试哦```我以为是这种
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马