数组B包含数组A,参照数组A为数组B排序

有两个数组A和B,A的长度小于100,B的长度小于1000,类型均为ArrayList,A中元素不重复且所有的元素均在B序列中,B序列中包括的A序列元素可能出现重复,也可能包括不在A中的元素,设计实现一个方法对B进行排序,对于出现在A中的元素,则按照在A中出现顺序进行排序;

对于不在A中的元素,全部排在最后,同时按照整数大小进行排序。

输入:数组A,数组B

输出:排序号的数组B

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

public class Test {
    public static void main(String[] args) {
        List<Integer> a = new ArrayList<>();
        a.add(5);
        a.add(1);
        a.add(7);
        a.add(9);
        a.add(6);
        a.add(11);
        a.add(25);
        a.add(2);

        List<Integer> b = new ArrayList<>();
        b.add(5);
        b.add(1);
        b.add(7);
        b.add(9);
        b.add(6);
        b.add(11);
        b.add(25);
        b.add(2);
        b.add(9);
        b.add(6);
        b.add(7);
        b.add(19);
        b.add(16);
        b.add(17);
        b.add(16);
        //排序a
        sort(a, b);
        System.out.println(a);
        System.out.println(b);
    }

    public static void sort(List<Integer> a, List<Integer> b) {
        b.sort((o1, o2) -> {
            if (a.contains(o1) && a.contains(o2)) {
                return a.indexOf(o1) - a.indexOf(o2);
            } else {
                if (a.contains(o1)) {
                    return -1;
                } else if (a.contains(o2)) {
                    return 1;
                } else {
                    return o1.compareTo(o2);
                }
            }
        });
    }
}

img