【问题标题】:Add values not present in list object based on lookup table根据查找表添加列表对象中不存在的值
【发布时间】:2021-10-20 20:11:03
【问题描述】:

我有一个像这样的域对象,

class PGRatingConfig {
   // other fields
   private List<Rating> rating;
}

class Rating {
   String id;
   String value;
}

我有一个这样的产品组的查找表

Map<String, String> map = new HashMap<>();
map.add("1", "Soap");
map.add("2", "Cleaner");

我正在从数据库中获取这个List&lt;PGRatingConfig&gt;,它并不总是包含查找表中的所有数据。例如,它会返回一个PGRatingConfig for soap Rating as

PGRatingConfig

// some fields
Rating [
pgId: soap
value: 3
]

我想为Cleaner 添加查找表中的另一个值,默认值为3PGRatingConfig 现在看起来像

 // some fields
    Rating [{
    pgId: soap,
    value: 3},
    {pgId:cleaner,
     value: 4
    }
    ]

如何添加这些?

【问题讨论】:

  • 为什么soap有一个单独的id和value,而cleaner似乎本身就是一个字段名?

标签: java lambda collections java-8 java-stream


【解决方案1】:

您可以遍历地图的条目并添加它们。

PGRatingConfig pg = <some defined instance with some products added>

for (Entry<String,String> entry : map.entrySet()) {
    pg.addRating(new Rating(entry.getKey(), entry.getValue())); 
}

这是修改后的类的样子

class PGRatingConfig {
   // other fields
   private List<Rating> rating;
   public void addRating(Rating r) {
      rating.add(r);
   }
   // other methods as needed
}

class Rating {
   private String id;
   private String value;
   public Rating(String id, String value) {
      this.id = id;
      this.value = value;
   }
   // getters
}

注意:要向地图添加条目,请使用 put 而不是 add

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-31
    • 2021-10-16
    • 2021-10-24
    • 1970-01-01
    • 2021-09-21
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多