使用 Java 8

我想替换我从请求中获得的输入中的一些值。但首先让我解释一下这里的场景,我有一个像下面这样的 pojo,它将在 primaryColumn Map 中保存主列名称及其值,columns Map 保存所有其他列名称及其值,metaData 保存列元数据。

class TableData{

    private String tableName;
    private Map<String,Object> primaryColumn;
    private Map<String,Object> columns;
    private Map<String,Object> metaData;

    //Setters and getters

}

还有一个像下面这样的类,它包含 TableData 的列表。

class TableDataList{
   private List<TableData> dataList;
   
   //Setters and getters

}

我的输入将如下所示

dataList:[TableData(tableName=Random,primaryColumn={Y=26-07-2021},columns={X=26-07-2022,XYZ=paris},metaData={Y=DATE,X=DATE,XYZ= VARCHAR2}),TableData(tableName=Code,primaryColumn={Z=Seconds},columns={V=26-07-2021,ABC=Person,H=26-07-2022},metaData={Z=VARCHAR2,V=DATE,ABC=VARCHAR2,H=DATE}),...]

参考表看起来像这样

随机表

Y X XYZ
26-07-2021 26-07-2022 巴黎

代码表

Z V ABC H
26-07-2021 人物 26-07-2022

所以在这个例子中,TableDataList 类将保存 TableData 的列表(其中包含 tableName、primaryColumn、columns、metaData)

我想流过 TableDataList 并从列表中获取每个索引并执行一些如下检查

  1. 首先我们应该检查元数据映射,它是否有任何日期值。如果是
  2. 从元数据映射中获取以 DATE 作为值的键,并使用该键在主列和列映射中进行搜索。如果 primaryColumn 或 columns Map 包含该键,则
  3. 将该键的值替换为 28-08-2021 或我们提供的任何其他日期。

我编写了没有流的代码,如下所示,但我想使用 JAVA8 实现相同的效果

List<TableData> modified = new ArrayList<>();
for(TableData data: dataList) {
    for(String key: data.getMetaData().keySet();) {
        if(data.getMetaData().get(key).equals("DATE")
           && data.getcolumns().containsKey(key)){
             data.getcolumns().replace(key,"28-08-2021");
        } else if(data.getMetaData().get(key).equals("DATE")
           && data.getPrimaryColumn().containsKey(key)){
             data.getPrimaryColumn().replace(key,"28-08-2021");
        }
    }
    modified.add(data);
}
junjun8142 回答:使用 Java 8

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/25505.html

大家都在问