Java generalizes methods to validate nulls in object parameters
•
Java
I'm trying to implement a logic. I have a POJO class with 7 properties
The following is the implementation
Map<String,List<PriceClass>> map = new HashMap();
for (PriceClass price : prices) {
if (price.getAttribute1() !=null) {
if (map.get("attribute1") !=null) {
map.get("attribute1").add(price);
} else {
map.set("attibute1",Collections.singletonList(price))
}
} else if(price.getAttribute2()!=null) {
if (map.get("attribute12") !=null) {
map.get("attribute2").add(price);
} else {
map.set("attibute2",Collections.singletonList(price))
}
} else if (price.getAttribute3() !=null) {
.
.
.
} else if (price.getAttribute7() !=null) {
//update the map
}
}
My question is not whether there is any general implementation I can try to write so many if loops
Solution
One of the best possible solutions is similar to the one I proposed earlier today
Use map < string, optional > Use the key of the future output mapping key to store the optional value of the checked attribute
Map<String,Optional<?>> options = new HashMap<>();
options.put("attribute1",Optional.ofNullable(price.getAttribute1()));
// ...
options.put("attribute3",Optional.ofNullable(price.getAttribute2()));
// ...
Iterations using indexes allow you to perform map updates
Map<String,List<Price>> map = new HashMap();
for (int i=1; i<7; i++) { // attributes 1..7
String attribute = "attribute" + i; // attribute1...attribute7
options.get(attribute).ifPresent(any -> // for non-nulls
map.put( // put to the map
attribute,// attribute as key remains
Optional.ofNullable(map.get(attribute)) // gets the existing list
.orElse(new ArrayList<>()) // or creates empty
.add(price))); // adds the current Price
}
Besides, I bet your intentions are a little different Map:: set has no method
map.set("attibute1",Collections.singletonList(price))
Don't you want to put a list < < price >, on the contrary, an item to the same key?
map.put("attibute1",Collections.singletonList(price))
Therefore, you can use the method I posted above
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
