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