package practice;
import java.util.Arrays;
import java.util.TreeSet;
public class AnArrayOfMerger {
public static void main(String[] args) {
// 待合并数组
Integer[] array01 = { 1, 7, 9, 11, 13, 15, 17, 19 };
Integer[] array02 = { 2, 4, 6, 8, 10 };
/**
* 方法一:循环遍历
*/
// 创建合并数组
Integer[] totalArray = new Integer[array01.length + array02.length];
// 将array01中的元素填充至合并数组
for (int i = 0; i < array01.length; i++) {
totalArray[i] = array01[i];
}
// 将数组2中的元素填充至合并数组
for (int i = 0; i < array02.length; i++) {
// array01.length + i延伸下标,扩容合并数组
totalArray[array01.length + i] = array02[i];
}
// 遍历合并数组
for (int i = 0; i < totalArray.length; i++) {
System.out.print(totalArray[i] + " ");
}
/**
* 方法二:判断填充
*/
System.out.println("
");
// 创建动态合并数组,其长度是array01和array02的长度之和
int newArray[] = new int[array01.length + array02.length];
// 以array01和array02中的元素为基础为合并数组填充元素
for (int i = 0; i < newArray.length; i++) {
if (i < array01.length) {
newArray[i] = array01[i];
} else {
newArray[i] = array02[i - array01.length];
}
}
// 遍历合并数组中的元素
for (int i = 0; i < newArray.length; i++) {
System.out.print(newArray[i] + " ");
}
/**
* 方法三:使用System.arraycopy(src, srcPos, dest, destPos, length);
* src-源数组,srcPos-源数组元素组起始索引
* dest-目标数组,destPos-目标数组元素起始索引
* length-复制长度
*/
System.out.println("
");
int array1Length = array01.length; // 获取array01的长度
int array2Length = array02.length; // 获取array02的长度
// 向array01中拷贝元素并为array01扩容
array01 = Arrays.copyOf(array01, array1Length + array2Length);
System.arraycopy(array02, 0, array01, array1Length, array2Length);
for (int i = 0; i < array01.length; i++) {
System.out.print(array01[i] + " ");
}
/**
* 方法四:使用TreeSet集合
*/
System.out.println("
");
TreeSet<Integer> treeSet = new TreeSet<Integer>();
// 将数组转化成List集合
treeSet.addAll(Arrays.asList(array01));
treeSet.addAll(Arrays.asList(array02));
// 创建合并数组
Integer[] buildArray = treeSet.toArray(new Integer[treeSet.size()]);
// 遍历数组中的元素
for (int i = 0; i < buildArray.length; i++) {
System.out.print(buildArray[i] + " ");
}
}
}