Java基础题:按条件合并对象数组

要求如下:

class ProA {
    String key1;
    String key2;
    String v1;
}

class ProB {
    String key1;
    String key2;
    String v2;
}

class MergedAB {
    String key1;
    String key2;
    String v1;
    String v2;
}
 让ProA[]数组和ProB[]数组能够合并成一个MergedAB[]数组.
数组中的元素合并的规则是: 当ProA.key1的值等于ProB.key1的值, 且ProA.key2的值等于ProB.key2值时,
就把ProA和ProB两个实例合并起来, 形成一个新的MergedAB实例并放入MergedAB[]数组.
其中:
MergedAB.key1 = ProA.key1 = ProB.key1,
MergedAB.key2 = ProA.key2 = ProB.key2,
MergedAB.v1 = ProA.v1,
MergedAB.v2 = ProB.v2
比如 arrProA数组为:
[
    {key1: "alice", key2: "box", v1: "xx"},
    {key1: "alice", key2: "bob", v1: "yy"},
    {key1: "catch", key2: "dog", v1: "zz"}
]
arrProB数组为:
[
    {key1: "alice", key2: "bob", v2: "oo"},
    {key1: "alice", key2: "bee", v2: "pp"}
]
那么合并后的MergedAB数组就应该为:
[
    {key1: "alice", key2: "bob", v1: "yy", v2: "oo"}
]

简单完成代码如下:

package eg01;

import java.util.Arrays;

//题目eg01.txt
public class Eg01 {

    public static void main(String[] args) {
        ProA[] proAList = new ProA[3];
        ProB[] proBList = new ProB[3];
        MergedAB[] mergedABList = new MergedAB[3];

//        测试对象数组ProA的输出
//        System.out.println("数组声明测试:------------------------");
//        for (int i = 0; i < proAList.length; i++){
//            System.out.println(proAList[i]+" ");
//        }
        //预读对象数组:ProAList:
        ProA proA1 = new ProA("Tom","boy","TomV1");
        ProA proA2 = new ProA("Alice","girl","AliceV1");
        ProA proA3 = new ProA("Py","boy","PyV1");
        proAList[0] = proA1;
        proAList[1] = proA2;
        proAList[2] = proA3;

//        System.out.println("数组实例测试:--------------------------------");
//        for (int i = 0; i < proAList.length; i++){
//            System.out.println(proAList[i]+" ");
//        }

        ProB proB1 = new ProB("Ton","boy","TonV2");
        ProB proB2 = new ProB("Alice","girl","AliceV2");
        ProB proB3 = new ProB("Py","girl","PyV2");
        proBList[0] = proB1;
        proBList[1] = proB2;
        proBList[2] = proB3;

        MergedAB mergedAB1 = new MergedAB("","","","");
        MergedAB mergedAB2 = new MergedAB("","","","");
        MergedAB mergedAB3 = new MergedAB("","","","");
        mergedABList[0] = mergedAB1;
        mergedABList[1] = mergedAB2;
        mergedABList[2] = mergedAB3;
        //mergedABList[3] = mergedAB4;

        for(int i = 0; i < proAList.length; i++){
            //System.out.println(i);
            for(int j = 0; j < proBList.length; j++){
                //System.out.println(j);
//                System.out.println(proAList[i].key1.equals(proBList[j].key1) && proAList[i].key2.equals(proBList[j].key2));
                if (proAList[i].key1.equals(proBList[j].key1) && proAList[i].key2.equals(proBList[j].key2)){
//                    mergedABList[i].key1 = proAList[i].key1;
//                    mergedABList[i].key2 = proAList[i].key2;
//                    mergedABList[i].v1 = proAList[i].v1;
//                    mergedABList[i].v2 = proBList[j].v2;
                    int k = 0;
                    mergedABList[k].key1 = proAList[i].key1;
                    mergedABList[k].key2 = proAList[i].key2;
                    mergedABList[k].v1 = proAList[i].v1;
                    mergedABList[k].v2 = proBList[j].v2;
                    k++;

                }
            }
        }

        System.out.println("合并输出测试:--------------------------------");
        for (int i = 0; i < mergedABList.length; i++){
            if (mergedABList[i].key1!="") {
                System.out.println(mergedABList[i] + " ");
            }
        }

    }

}

class ProA{
    String key1;
    String key2;
    String v1;

    public ProA(String key1, String key2, String v1) {
        this.key1 = key1;
        this.key2 = key2;
        this.v1 = v1;
    }

    @Override
    public String toString() {
        return "ProA{" +
                "key1='" + key1 + '\'' +
                ", key2='" + key2 + '\'' +
                ", v1='" + v1 + '\'' +
                '}';
    }
}

class ProB{
    String key1;
    String key2;
    String v2;

    public ProB(String key1, String key2, String v2) {
        this.key1 = key1;
        this.key2 = key2;
        this.v2 = v2;
    }

    @Override
    public String toString() {
        return "ProB{" +
                "key1='" + key1 + '\'' +
                ", key2='" + key2 + '\'' +
                ", v2='" + v2 + '\'' +
                '}';
    }
}

class MergedAB{
    String key1;
    String key2;
    String v1;
    String v2;

    public MergedAB(String key1, String key2, String v1, String v2) {
        this.key1 = key1;
        this.key2 = key2;
        this.v1 = v1;
        this.v2 = v2;
    }

    @Override
    public String toString() {
        return "MergedAB{" +
                "key1='" + key1 + '\'' +
                ", key2='" + key2 + '\'' +
                ", v1='" + v1 + '\'' +
                ", v2='" + v2 + '\'' +
                '}';
    }
}

输出结果:
在这里插入图片描述
大家可以再自己思考一下这道题涉及到的知识点:
比如在实例测试的时候,如果没有toString()方法,输出会是什么样,为什么?
比如如果没有实例化,输出又会是什么样,为什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值