首页 > 解决方案 > 根据查找表添加列表对象中不存在的值

问题描述

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

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<PGRatingConfig>从数据库中获取它,它并不总是包含查找表中的所有数据。例如,它会返回一个PGRatingConfig作为soapRating

PGRatingConfig

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

我想从查找表中添加其他值,Cleaner默认值为3. 现在PGRatingConfig看起来像

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

我将如何添加这些?

标签: javalambdacollectionsjava-8java-stream

解决方案


您可以迭代地图的条目并添加它们。

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


推荐阅读