`

java代码转PHP代码,高手进

PHP 
阅读更多
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;
	}

}

分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java微信公众平台开发自定义菜单项目代码

    整理高手们的博客代码 转自:http://blog.csdn.net/jsxymgh/article/details/10190679 希望对于初学者有所帮助,少...下次我准备根据php开发整理出java版的开发实用的天气, 地图, 公交等接口代码开发。 敬请期待。

    优秀代码编辑器工具 PhpDesigner 8.1.2 Portable 绿色中文免费版.zip

    Xdebug来测试和分析PHP代码PHP, HTML和CSS实时错误检测 远程FTP编辑 高级搜索和替代 代码块库和模板支持TortoiseSVN PHP, HTML和CSS代码美化工具 显示匹配符和丢失的括弧及标签 利用内置的php手册来学习php 关于...

    PHP加解密软件

     Zend Guard的工作原理和Java类似,编译后的PHP程序就像编译好的Java二进制代码,需要JVM的支持才能运行,Zend Optimizer可以看作是PHP的虚拟机。Zend Guard与Zend Optimizer相互配合,就能完成编译加密和执行编译...

    advanced_programming_with_javaserver_pages.zip

    JSP的语法基本上和Java是相同的,有Java基础的读者可以很快学会如何使用JSP,而没有Java语言基础的读者,只要循序渐进地阅读本书,一样可以成为JSP编程的高手。本书主要分为两个部分:第一部分为JSP基础部分。通过...

    动感十足----网页特效王 v1.03

    本程序分为20大个类,共包含700多个网页精品特效代码主要是Java代码,仅需鼠标操作就能让您的网页动感十足。最重要的是它更有PHP代码和CGI代码,可以制作只通过鼠标操作就能设计制作出具有交互功能的Active动态网页...

    Android高手过招 FAQ.zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

    Android高手过招 FAQ .zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

    matlab导入excel代码-python_100day_bible:自学python100天,入门到高手宝典

    matlab导入excel代码 Python - 100天从新手到大师 马蚁蛋 Python应用领域和就业形势分析 简单的说,Python是一个“优雅”、“明确”、“简单”的编程语言。 学习曲线低,非专业人士也能上手 开源系统,拥有强大的...

    超强文字编辑器 EditPlus V3.70 build 915汉化最新版

    作为文字编辑器它还有一项好用的功能即剪贴板动态监测功能,能够同步于剪贴板自动将文字粘贴进 EditPlus 的编辑窗口中,进而让你省去复制后再粘贴的步骤。 EditPlus 也是一款非常好用的 HTML 编辑器,除了支持颜色...

    phpDesigner_8.1.0.10 含注册码

    等,不管您是 PHP 网页设计高手,或者是刚入门的新手,您都可以使用者套软件来帮您设计网页程序(SQL、HTML 亦支持)。 最新版phpdesigner 8.01(包含中文版),是完整的集成开发环境, 软件安装后默认是英文,可以在...

    基于Android的高手过招 FAQ .zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

    基于Android的高手过招 FAQ.zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用...

Global site tag (gtag.js) - Google Analytics