import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayAssemble {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
String[] arrOfInt = { "红", "橙", "黄","黑" };
@SuppressWarnings("unused")
String[] arrOfChar1 = { "L", "XL" };
@SuppressWarnings("unused")
String[] arrOfChar2 = { "麻", "晴纶","看" };
String[] arrOfChar3 = { "奎", "康" };
String[] arrOfStr = { "lmy", "lyb", "mz", "yx" };
System.out.println("以下是组合后的数组");
// Object[][] objectsArrays = assembleArraysToPlanerArray(new Object[][] {arrOfInt, arrOfChar1, arrOfChar2, arrOfChar3,arrOfStr });
Object[][] objectsArrays = assembleArraysToPlanerArray(new Object[][] { arrOfChar1,arrOfChar2, arrOfChar3 });
// Object[][] objectsArrays = assembleArraysToPlanerArray(new Object[][] { arrOfChar1,arrOfChar2 });
int i = 0;
for (Object[] objArrays : objectsArrays) {
i++;
System.out.println(i + "=" + Arrays.toString(objArrays));
}
}
// 方法一的辅助方法:将一个数组类型或对象类型的List与数组组合,并返回List
@SuppressWarnings("unchecked")
public static List assembleArrayToList(List aList, Object[] array) {
List arrList = new ArrayList();
// 遍历aList,将array与aList进行组合
for (int i = 0; i < aList.size(); i++) {
Object obj = aList.get(i);
// 检查aList的元素是否是数组类型的,如果不是,则直接产生组合列表
if (obj instanceof Object[]) {
Object[] listArr = (Object[]) obj;
// 对数组类型的aList元素与array进行组合
for (int k = 0; k < array.length; k++) {
Object[] newListArr = new Object[listArr.length + 1];
for (int j = 0; j < listArr.length; j++) {
newListArr[j] = listArr[j];
}
newListArr[listArr.length] = array[k];
arrList.add(newListArr);
}
} else {
// 对非数组类型的aList元素与array进行组合
for (int j = 0; j < array.length; j++) {
Object[] arrObj = { aList.get(i), array[j] };
arrList.add(arrObj);
}
}
}
return arrList;
}
// 方法二:使用二维数组参数方法返回组合的二维数组类型,并使用了递归
@SuppressWarnings("unchecked")
public static Object[][] assembleArraysToPlanerArray(Object[][] objectArrays) {
if (objectArrays.length == 2) {
Object[] assembledArray = objectArrays[0];
Object[] array = objectArrays[1];
return assembleArrayToArray(assembledArray, array);
} else if (objectArrays.length <= 1) {
return objectArrays;
} else {
Object[] objArray = objectArrays[objectArrays.length - 1];
objectArrays = Arrays.copyOf(objectArrays, objectArrays.length - 1);
return assembleArrayToArray(assembleArraysToPlanerArray(objectArrays), objArray);
}
}
// 方法二的辅助方法:将一个数组类型或二维数组类型与数组组合,并返回二维数组
public static Object[][] assembleArrayToArray(Object[] assembledArray,Object[] array) {
int lenAssArray = assembledArray.length;
int lenArray = array.length;
Object[][] objArrays = new Object[lenAssArray * lenArray][];
for (int i = 0; i < lenAssArray; i++) {
Object obj = assembledArray[i];
if (obj instanceof Object[]) {
Object[] objArr = (Object[]) obj;
int lenObjArr = objArr.length;
for (int k = 0; k < lenArray; k++) {
// 复制objArr数组到newListArr数组,并将其长度加一
Object[] newListArr = Arrays.copyOf(objArr, lenObjArr + 1);
// 将array数组的第k+1元素赋值给newListArr数组最后的元素,并将newListArr赋值给objArrays数组的第k+1个元素
newListArr[lenObjArr] = array[k];
objArrays[lenArray * i + k] = newListArr;
}
} else {
for (int j = 0; j < lenArray; j++) {
Object[] newObjArray = { obj, array[j] };
objArrays[lenArray * i + j] = newObjArray;
}
}
}
return objArrays;
}
}
分享到:
相关推荐
整理高手们的博客代码 转自:http://blog.csdn.net/jsxymgh/article/details/10190679 希望对于初学者有所帮助,少...下次我准备根据php开发整理出java版的开发实用的天气, 地图, 公交等接口代码开发。 敬请期待。
Xdebug来测试和分析PHP代码PHP, HTML和CSS实时错误检测 远程FTP编辑 高级搜索和替代 代码块库和模板支持TortoiseSVN PHP, HTML和CSS代码美化工具 显示匹配符和丢失的括弧及标签 利用内置的php手册来学习php 关于...
根据给定的文件信息,以下是对“Java心得 学JAVA必看”的详细解读与扩展。 ### Java学习心得 #### 1. 沉稳心态 浮躁的心态永远无法成为真正的高手。在学习Java的过程中,首先需要调整自己的心态,保持平和、冷静的...
6. **DOS高手速成.CHM**: DOS(Disk Operating System)是早期个人计算机上的命令行操作系统。这个教程可能会讲解DOS命令的使用、批处理脚本编写、磁盘管理、文件操作、系统设置以及一些高级技巧,对理解计算机...
【Java从初级到精通】全课程涵盖了编程语言的基础到高级技术,旨在帮助初学者逐步掌握Java这门强大的编程语言,并最终达到精通的程度。...通过持续学习和实践,你可以逐步提升自己的编程技能,成为一个Java高手。
《CSDN程序员开发高手2004年1-6期》是一套珍贵的IT技术资料,涵盖了2004年全年CSDN杂志的主要内容。这套资源对于想要深入学习编程、提升自身技能的IT从业者来说,具有极高的参考价值。每一期都包含了丰富的文章、...
3. **与HTML的结合**:PHP代码可以嵌入到HTML文件中,通过<?php...?>标签进行包围。这种混合模式使得开发者能够在静态页面中轻松插入动态内容。 4. **变量与数据类型**:PHP支持多种数据类型,包括整型、浮点型、...
Zend Guard的工作原理和Java类似,编译后的PHP程序就像编译好的Java二进制代码,需要JVM的支持才能运行,Zend Optimizer可以看作是PHP的虚拟机。Zend Guard与Zend Optimizer相互配合,就能完成编译加密和执行编译...
通过以上内容的学习,相信即使是编程小白也能快速掌握PHP基础知识,并逐步成长为PHP高手。在学习过程中,除了理论知识外,还需要注重实践操作,不断积累项目经验,才能真正将所学知识转化为自己的技能。希望每位学习...
JSP的语法基本上和Java是相同的,有Java基础的读者可以很快学会如何使用JSP,而没有Java语言基础的读者,只要循序渐进地阅读本书,一样可以成为JSP编程的高手。本书主要分为两个部分:第一部分为JSP基础部分。通过...
6. **服务器端开发技术**:具备至少一门后端技术,如Java EE、LAMP(Linux、Apache、MySQL、PHP)等,理解API设计和RESTful架构,能够实现客户端和服务器的有效通信。 7. **持续学习和实践**:不断关注Android的...
7. **关注行业动态**:保持对Web开发新技术的关注,如PHP、JSP/JavaServlet、.NET、CGI等,这可以帮助你适应技术迭代,保持竞争力。 8. **服务器知识**:理解服务器操作系统如Win2000的安全性,掌握IIS配置和数据库...
从给定的文件信息来看,虽然标题和描述都是关于“LINUX内核源代码情景分析”的PDF文档,但在部分给出的内容中,实际上讨论的是编程基础的重要性以及如何避免学习中的常见误区,尤其是对于初学者而言。以下是对这部分...
本教程旨在提供深入浅出的指导,让你从新手到高手,全面掌握Eclipse的使用技巧。 首先,Eclipse的基础操作是学习的重点。这包括创建新项目、导入现有项目、配置构建路径、管理源代码以及设置运行配置等。了解如何...
本程序分为20大个类,共包含700多个网页精品特效代码主要是Java代码,仅需鼠标操作就能让您的网页动感十足。最重要的是它更有PHP代码和CGI代码,可以制作只通过鼠标操作就能设计制作出具有交互功能的Active动态网页...
源码网汇集了大量的开源项目和商业源码,覆盖了Java、PHP、Python等主流编程语言,同时还提供了软件开发工具、插件等资源。对于寻求全面资源的开发者来说,这里是一个宝藏般的存在。 ### 四、虾客源码...
描述中提到,这个记事本工具包含了多种编程语言的支持,涵盖了几乎所有的主流编程语言,如Python、Java、C++、JavaScript、PHP、Ruby等。这意味着无论你使用哪种语言进行开发,都能在这个记事本中得到良好的支持。...
作为一款强大的文本编辑器,EditPlus支持多种编程语言,包括但不限于C、C++、Java、Python、PHP、JavaScript等。每种语言都有自己特定的语法高亮设置,使得代码更易于理解和编辑。 4. **宏和用户工具** EditPlus...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...