java两个数组[5,5]跟[4,4,2]比较生成[4,1,3,2]新数组

java两个数组[5,5]跟[4,4,2]比较生成[4,1,3,2]新数组。
含义是1,2,3,4,5,6,7,8,9,0分别分为两组,
第一组:5个5个一组{[12345],[67890]}
第二组:4个4个2个一组{[1234],[5678],[90]}
相互比较得出匹配数量
a1b1=4
a1b2=1
a2b2=3
a2b3=2

不明白为什么只比较a1b1 a1b2 a2b2 a2b3,而没有a1b3 a2b1
不过按照你的意思直接比较就可以了
以下代码手写的,只是思路

public static int cnt(arraylist<Integer> a, arraylist<Integer> b)
{
int n = 0;
arraylist<Integer> c = a.clone();
c.removeAll(b);
return a.length() -c.length();
}
public static void main(String args[]) {
int[] an = new int[] {5,5};
int[] bn = new int[] {4,4,2};
arraylist<arraylist<Integer>> a = new arraylist<arraylist<Integer>>();
arraylist<arraylist<Integer>> b = new arraylist<arraylist<Integer>>();
int acc = 1;
for (int i = 0; i < an.length(); i++)
{
a.add(new arraylist<Integer>());
for (int j = 0; j < an[i]; j++) a.get(i).add(new integer(acc));
acc++;
}
acc = 1;
for (int i = 0; i < bn.length(); i++)
{
b.add(new arraylist<Integer>());
for (int j = 0; j < bn[i]; j++) b.get(i).add(new integer(acc));
acc++;
}
System.out.println(cnt(a.get(0), b.get(0)));
System.out.println(cnt(a.get(0), b.get(1)));
System.out.println(cnt(a.get(1), b.get(1)));
System.out.println(cnt(a.get(1), b.get(2)));
}

java的集合提供交并差方法,活用这些方法就可以了

import java.util.*;
public class Sample {
    public static void main(String[] args) {
        Integer[] src = new Integer[]{1,2,3,4,5,6,7,8,9,0}; //原始数据
        List<List<Integer>> list1 = group(src, 5); //按5个元素分组
        List<List<Integer>> list2 = group(src, 4); //按4个元素分组
        List<List<Integer>> list3 = diff(list1, list2); //比较分组
        int[] g1 = new int[list1.size()]; //按5个元素分组结果
        for (int i=0; i<g1.length; i++)
            g1[i] = list1.get(i).size();
        int[] g2 = new int[list2.size()]; //按4个元素分组结果
        for (int i=0; i<g2.length; i++)
            g2[i] = list2.get(i).size();
        int[] g3 = new int[list3.size()]; //比较分组结果
        for (int i=0; i<g3.length; i++)
            g3[i] = list3.get(i).size();
        //打印结果
        System.out.printf("第一组:%s----%s\n", Arrays.toString(g1), list1);
        System.out.printf("第二组:%s----%s\n", Arrays.toString(g2), list2);
        System.out.printf("比较结果:%s----%s\n", Arrays.toString(g3), list3);
    }
    public static <T> List<List<T>> group(T[] src, int groupAmount) { //按参数个数分组
        List<List<T>> list = new ArrayList<>();
        for (int i=0; i<src.length; i++) {
            if (i%groupAmount==0) {
                list.add(new ArrayList<>()); //达到个数则添加新组
            }
            list.get(list.size()-1).add(src[i]); //给组添加元素
        }
        return list;
    }
    public static <T> List<List<T>> diff(List<List<T>> list1, List<List<T>> list2) {//比较分组
        if (list1.size() > list2.size()) return diff(list2, list1);
        List<List<T>> list = new ArrayList<>();
        for (int i=0; i<list1.size(); i++) {
            for (int j=i; j<i+list1.size()&&j<list2.size(); j++) {
                List<T> tmp = new ArrayList<>(list1.get(i)); 
                tmp.retainAll(list2.get(j)); //取集合交集
                list.add(tmp); //保存交集结果
            }
        }
        return list;
    }
}