牛骨文教育服务平台(让学习变的简单)
博文笔记

java 多个数组合并成一个数组,一个数组分割成多个数组!

创建时间:2017-02-10 投稿人: 浏览次数:10044

java 多个数组合并成一个数组,一个数组分割成多个数组!


这没什么好说的,直接上代码:

1,多个数组合并成一个:

  

// tyy 多个数组合并
	private static int[] getListString(int[] aa, int[] bb, int[] cc) {
		// TODO Auto-generated method stub
		List collect = new ArrayList();
		collect.add(aa);
		collect.add(bb);
		collect.add(cc);
		int[] aa0 = null;
		// tyy 每次都是两个数组合并 所以合并的次数为 collect.size() ,第一个是虚拟的数组
		for (int i = 0; i < collect.size(); i++) {
			int[] aa1 = (int[]) collect.get(i);
			int[] newInt = onArrayTogater(aa0, aa1);
			aa0 = newInt;
		}
		return aa0;
	}

	private static int[] onArrayTogater(int[] aa, int[] bb) {
		// TODO Auto-generated method stub
		if (aa == null) {
			return bb;
		}
		int[] collectionInt = new int[aa.length + bb.length];
		for (int i = 0; i < aa.length; i++) {
			collectionInt[i] = aa[i];
		}
		for (int i = aa.length; i < aa.length + bb.length; i++) {
			collectionInt[i] = aa[i - aa.length];
		}
		return collectionInt;

	}

这里合并的数组虽然只写了3个但是理论上可以更多,只需要把需要合并的数组都添加到list中去就可以了。例如:collect.add(dd);



2 , 一个数组分裂成多个数组

/**
	 * tyy
	 * @param dd  要拆分的数组
	 * @param b   每一个拆分的数组的大小
	 * @return
	 */
	private static List<int[]> getListIntArray(int[] dd, int b) {
		List<int[]> aa = new ArrayList<int[]>();
		// tyy 取整代表可以拆分的数组个数
		int f = dd.length / b;
		for (int i = 0; i < f; i++) {
			int[] bbb = new int[b];
			for (int j = 0; j < b; j++) {
				bbb[j] = dd[j + i * b];
			}
			aa.add(bbb);
		}
		return aa;
	}

3整体的代码为

package www.tianren.com;

import java.util.ArrayList;
import java.util.List;

public class java210 {
	public static void main(String[] args) {
		int[] aa = { 0, 6, 4, 5, 24, 3, 4, 56, 2, 34, 5, 3, 2, 2, 34, 5, 3, 2,
				7, 6, 4, 5, 2, 1, 3 };
		int[] bb = { 4, 5, 4, 5, 24, 3, 4, 56, 2, 34, 5, 3, 2, 7, 6, 4, 4, 4,
				4, 4, 4, 4, 4, 4 };
		int[] cc = { 4, 5, 4, 5, 24, 3, 4 };
		int[] dd = getListString(aa, bb, cc);
		List<int[]> ee = new ArrayList<int[]>();
		ee = getListIntArray(dd, 8);
		int[] gg = (int[]) ee.get(0);
		for (int aaaa : gg) {
			System.out.println("eee个数为=" + aaaa);
		}
	}

	/**
	 * tyy
	 * @param dd  要拆分的数组
	 * @param b   每一个拆分的数组的大小
	 * @return
	 */
	private static List<int[]> getListIntArray(int[] dd, int b) {
		List<int[]> aa = new ArrayList<int[]>();
		// tyy 取整代表可以拆分的数组个数
		int f = dd.length / b;
		for (int i = 0; i < f; i++) {
			int[] bbb = new int[b];
			for (int j = 0; j < b; j++) {
				bbb[j] = dd[j + i * b];
			}
			aa.add(bbb);
		}
		return aa;
	}

	// tyy 多个数组合并
	private static int[] getListString(int[] aa, int[] bb, int[] cc) {
		// TODO Auto-generated method stub
		List collect = new ArrayList();
		collect.add(aa);
		collect.add(bb);
		collect.add(cc);
		int[] aa0 = null;
		// tyy 每次都是两个数组合并 所以合并的次数为 collect.size() ,第一个是虚拟的数组
		for (int i = 0; i < collect.size(); i++) {
			int[] aa1 = (int[]) collect.get(i);
			int[] newInt = onArrayTogater(aa0, aa1);
			aa0 = newInt;
		}
		return aa0;
	}

	private static int[] onArrayTogater(int[] aa, int[] bb) {
		// TODO Auto-generated method stub
		if (aa == null) {
			return bb;
		}
		int[] collectionInt = new int[aa.length + bb.length];
		for (int i = 0; i < aa.length; i++) {
			collectionInt[i] = aa[i];
		}
		for (int i = aa.length; i < aa.length + bb.length; i++) {
			collectionInt[i] = aa[i - aa.length];
		}
		return collectionInt;

	}

}

可以自行复制粘贴实验查看结果。


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。