免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2481 | 回复: 0
打印 上一主题 下一主题

java代码转PHP代码,高手进 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-22 14:58 |只看该作者 |倒序浏览
java代码转PHP代码,高手进







Java代码
  1. 1.import java.util.ArrayList;   
  2. 2.import java.util.Arrays;   
  3. 3.import java.util.List;   
  4. 4.  
  5. 5.public class ArrayAssemble {   
  6. 6.  
  7. 7.    @SuppressWarnings("unchecked")   
  8. 8.    public static void main(String[] args) {   
  9. 9.        String[] arrOfInt = { "红", "橙", "黄","黑" };   
  10. 10.        @SuppressWarnings("unused")   
  11. 11.        String[] arrOfChar1 = { "L", "XL" };   
  12. 12.        @SuppressWarnings("unused")   
  13. 13.        String[] arrOfChar2 = { "麻", "晴纶","看" };   
  14. 14.        String[] arrOfChar3 = { "奎", "康" };   
  15. 15.         String[] arrOfStr = { "lmy", "lyb", "mz", "yx" };   
  16. 16.  
  17. 17.        System.out.println("以下是组合后的数组");   
  18. 18.  
  19. 19.  
  20. 20.//      Object[][] objectsArrays = assembleArraysToPlanerArray(new Object[][] {arrOfInt, arrOfChar1, arrOfChar2, arrOfChar3,arrOfStr });   
  21. 21.        Object[][] objectsArrays = assembleArraysToPlanerArray(new Object[][] { arrOfChar1,arrOfChar2, arrOfChar3 });   
  22. 22.//      Object[][] objectsArrays = assembleArraysToPlanerArray(new Object[][] { arrOfChar1,arrOfChar2 });   
  23. 23.  
  24. 24.        int i = 0;   
  25. 25.        for (Object[] objArrays : objectsArrays) {   
  26. 26.            i++;   
  27. 27.            System.out.println(i + "=" + Arrays.toString(objArrays));   
  28. 28.        }   
  29. 29.  
  30. 30.    }   
  31. 31.  
  32. 32.    // 方法一的辅助方法:将一个数组类型或对象类型的List与数组组合,并返回List   
  33. 33.    @SuppressWarnings("unchecked")   
  34. 34.    public static List assembleArrayToList(List aList, Object[] array) {   
  35. 35.        List arrList = new ArrayList();   
  36. 36.        // 遍历aList,将array与aList进行组合   
  37. 37.        for (int i = 0; i < aList.size(); i++) {   
  38. 38.            Object obj = aList.get(i);   
  39. 39.            // 检查aList的元素是否是数组类型的,如果不是,则直接产生组合列表   
  40. 40.            if (obj instanceof Object[]) {   
  41. 41.                Object[] listArr = (Object[]) obj;   
  42. 42.                // 对数组类型的aList元素与array进行组合   
  43. 43.                for (int k = 0; k < array.length; k++) {   
  44. 44.                    Object[] newListArr = new Object[listArr.length + 1];   
  45. 45.                    for (int j = 0; j < listArr.length; j++) {   
  46. 46.                        newListArr[j] = listArr[j];   
  47. 47.                    }   
  48. 48.                    newListArr[listArr.length] = array[k];   
  49. 49.                    arrList.add(newListArr);   
  50. 50.                }   
  51. 51.            } else {   
  52. 52.                // 对非数组类型的aList元素与array进行组合   
  53. 53.                for (int j = 0; j < array.length; j++) {   
  54. 54.                    Object[] arrObj = { aList.get(i), array[j] };   
  55. 55.                    arrList.add(arrObj);   
  56. 56.                }   
  57. 57.            }   
  58. 58.        }   
  59. 59.        return arrList;   
  60. 60.    }   
  61. 61.  
  62. 62.    // 方法二:使用二维数组参数方法返回组合的二维数组类型,并使用了递归   
  63. 63.    @SuppressWarnings("unchecked")   
  64. 64.    public static Object[][] assembleArraysToPlanerArray(Object[][] objectArrays) {   
  65. 65.        if (objectArrays.length == 2) {   
  66. 66.            Object[] assembledArray = objectArrays[0];   
  67. 67.            Object[] array = objectArrays[1];   
  68. 68.            return assembleArrayToArray(assembledArray, array);   
  69. 69.        } else if (objectArrays.length <= 1) {   
  70. 70.            return objectArrays;   
  71. 71.        } else {   
  72. 72.            Object[] objArray = objectArrays[objectArrays.length - 1];   
  73. 73.            objectArrays = Arrays.copyOf(objectArrays, objectArrays.length - 1);   
  74. 74.            return assembleArrayToArray(assembleArraysToPlanerArray(objectArrays), objArray);   
  75. 75.        }   
  76. 76.    }   
  77. 77.  
  78. 78.    // 方法二的辅助方法:将一个数组类型或二维数组类型与数组组合,并返回二维数组   
  79. 79.    public static Object[][] assembleArrayToArray(Object[] assembledArray,Object[] array) {   
  80. 80.        int lenAssArray = assembledArray.length;   
  81. 81.        int lenArray = array.length;   
  82. 82.        Object[][] objArrays = new Object[lenAssArray * lenArray][];   
  83. 83.        for (int i = 0; i < lenAssArray; i++) {   
  84. 84.            Object obj = assembledArray[i];   
  85. 85.            if (obj instanceof Object[]) {   
  86. 86.                Object[] objArr = (Object[]) obj;   
  87. 87.                int lenObjArr = objArr.length;   
  88. 88.                for (int k = 0; k < lenArray; k++) {   
  89. 89.                    // 复制objArr数组到newListArr数组,并将其长度加一   
  90. 90.                    Object[] newListArr = Arrays.copyOf(objArr, lenObjArr + 1);   
  91. 91.                    // 将array数组的第k+1元素赋值给newListArr数组最后的元素,并将newListArr赋值给objArrays数组的第k+1个元素   
  92. 92.                    newListArr[lenObjArr] = array[k];   
  93. 93.                    objArrays[lenArray * i + k] = newListArr;   
  94. 94.                }   
  95. 95.            } else {   
  96. 96.                for (int j = 0; j < lenArray; j++) {   
  97. 97.                    Object[] newObjArray = { obj, array[j] };   
  98. 98.                    objArrays[lenArray * i + j] = newObjArray;   
  99. 99.                }   
  100. 100.            }   
  101. 101.        }   
  102. 102.        return objArrays;   
  103. 103.    }   
  104. 104.  
  105. 105.}  
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP