第一种思路:将数组转为List,然后对list进行排序。主要是采用Arrays的sort()方法排序和list.toArray()转换成数组。
public static void main(String[] args) {
int[] a = {12, 32, 63, 84, 105};
int[] b = {12, 32, 53, 74, 95};
List<Integer> list1 = new ArrayList<>();
for (Integer a1 : a){
list1.add(a1);
}
List<Integer> list2 = new ArrayList<>();
for (Integer b1 : b){
list2.add(b1);
}
List<Integer> list3 = new ArrayList<>();
list3.addAll(list1);
list3.addAll(list2);
Integer[] n = new Integer[list3.size()];
list3.toArray(n);//这里必须为包装类型
Arrays.sort(n);
for (Integer i : n){
System.out.println(i);
}
}
第二种思路:比较两个数组的元素,把较小的放在新数组中
public static void main(String[] args) {
int[] a = {11, 32, 63, 84, 105};
int[] b = {12, 32, 53, 74, 95};
int length1 = a.length;
int length2 = b.length;
int newArrayLength = length1 + length2;
int[] result = new int[newArrayLength];
int i = 0, j = 0, k = 0; //i:用于标示a数组 j:用来标示b数组 k:用来标示传入的数组
while (i < length1 && j < length2) {
/* 元素不管重复与否,直接给合并到一起 */
//if (a[i] <= b[j]) {
// result[k++] = a[i++];
//} else {
// result[k++] = b[j++];
//}
/* 去重复元素,但是空间利用率还是浪费啦,看结果后面有默认的2个0显示 */
if (a[i] < b[j]) {
result[k++] = a[i++];
} else if (a[i] == b[j]) {
result[k++] = a[i];
//在某个位置上2个值相等的话,取哪个都一样,
// 然后这个相等的位置的2个值都可以不用比啦,都直接向后移动1,继续比较
j++;
i++;
} else {
result[k++] = b[j++];
}
}
/* 后面while循环是用来保证两个数组比较完之后剩下的一个数组里的元素能顺利传入结果数组 */
while (i < a.length) {
result[k++] = a[i++];
}
while (j < b.length) {
result[k++] = b[j++];
}
System.out.println(Arrays.toString(result));
}
第三种思路:采用Java 8的Stream API方法(因没用过Java 8,这里后续再更新)