如何通过密钥将2个值与值一起加入?

时间:2017-11-29 14:39:41

标签: java join

我有两个文件,我已经阅读了2个HashMaps。这些文件表示的对象有5个要填充的字段。每张地图提供三张。我需要通过重叠的第三个对象加入这些。

这是我到目前为止的代码。它似乎有效,但我试图了解是否有更简洁的方法来做到这一点。

(如果相关:这些文件的大小不同。另外,它作为csv进入,所以为了填写地图,我只是简单地分开","并建立对象。

让我们说MyObj拥有5个字符串,生病称为s1-s5。 在文件中,s3是我们加入的。在决赛中,我想通过s1查找。

String company = "CompanyA";

HashMap<String, MyObj> first = readFromFirstFile(); //fills s1-s3
HashMap<String, MyObj> second = readFromSecondFile(); //fills s3-s5 
HashMap<String, MyObj> joined = new HashMap<>();

first.forEach((key,val) -> {
MyObj obj = second.get(key);

    if (obj != null && val.s5.equalsIgnoreCase(company)) {
      MyObj obj = new MyObj(s1,s2,s3,s4,s5);
      joined.put(obj.s1,obj);
    }
});

示例:

Example data file1:
1000 -> CompanyA, 0000001
1001 -> CompanyA, 0000002
1002 -> CompanyA, 0000003

Example data file 2:
0000001 -> "Snickers Delivery 11/29/2017", "Hershey"
0000002 -> "Potato Chips Delivery 11/20/2017", "Lays"
0000003 -> "Returned Shipment Video Games 11/20/2017", "EA"

Goal Data:
1000 -> CompanyA, 0000001, "Snickers Delivery 11/29/2017", "Hershey"
1001 -> CompanyA, 0000002, "Potato Chips Delivery 11/20/2017", "Lays"
1002 -> CompanyA, 0000003, "Returned Shipment Video Games 11/20/2017", "EA"

0 个答案:

没有答案