不愧是我,自己写能通过的代码就是垃圾

 
import java.util.*;
 
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()) {
            int a=sc.nextInt();
            ArrayList<Integer> list1 = new ArrayList<>();
            for (int i = 0; i < a; i++) {
                int x=sc.nextInt();
                list1.add(x);
            }
            int b=sc.nextInt();
            for (int i = 0; i < b; i++) {
                int y=sc.nextInt();
                list1.add(y);
            }
            ArrayList<Integer> list;
            list = (ArrayList<Integer>) list1.stream().distinct().collect(Collectors.toList());
            Collections.sort(list,new Comparator<Integer>() {

                 @Override
                 public int compare(Integer o1, Integer o2) {
                     return o1-o2;
                 }
             });
            for (Integer elements:list) {
                System.out.printf(String.valueOf(elements));
            }
            System.out.println();


        }
sc.close();
    }


}


观看大佬代码
使用treeSet一步到位 ,特性按自然顺序排序,set保证不重复
import java.util.*;


public class Main {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            Set<Long> set = new TreeSet<>();
            //接收第一个整形数组大小
            int size1 = sc.nextInt();
            for (int i = 0; i < size1; i++) {
                set.add(sc.nextLong()); //将该组的整数按数组大小循环添加进 set
            }
            //接收第一个整形数组大小
            int size2 = sc.nextInt();
            for (int i = 0; i < size2; i++) {
                set.add(sc.nextLong());
            }
            //遍历输出
            for (long n : set) {
                System.out.print(n);
            }
      /*
      注意:测试案例会以 两个整形数组 为一组测试用例, 并可能输入多组
      要记得组与组的结果之间换行
      */
            System.out.println();
        }

    }
    }