import java.util.*;
import java.io.*;
import java.util.stream.*;
class Main
{
final List
<Filter
> list
= Arrays.
asList(new Filter
("status",
"equal",
"active"),
new Filter("status", "equal", "inactive"), new Filter("name", "equal", "jhon"),
new Filter("id", "equal", 123));
final Map
<String, List
<Filter
>> map
= list.
stream() .collect(Collectors.groupingBy(Filter::getKey, LinkedHashMap::new, Collectors.toList()));
final List<Filter> result = map.entrySet().stream()
.map(e -> e.getValue().size() > 1
? new Filter(e.getKey(), "in", e.getValue().stream().map(Filter::getValue).toArray())
: e.getValue().get(0))
.collect(Collectors.toList());
result.
forEach(System.
out::println
); }
}
class Filter {
super();
this.key = key;
this.operator = operator;
this.value = value;
}
return key;
}
return operator;
}
return value;
}
@Override
StringBuilder builder = new StringBuilder();
builder.append("Filter [key=").append(key).append(", operator=").append(operator).append(", value=")
.
append(value
!= null && value.
getClass().
isArray() ? Arrays.
deepToString((Object[])value
) : value
) .append("]");
return builder.toString();
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2YS51dGlsLnN0cmVhbS4qOwoKY2xhc3MgTWFpbgp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgIGZpbmFsIExpc3Q8RmlsdGVyPiBsaXN0ID0gQXJyYXlzLmFzTGlzdChuZXcgRmlsdGVyKCJzdGF0dXMiLCAiZXF1YWwiLCAiYWN0aXZlIiksCiAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKCJzdGF0dXMiLCAiZXF1YWwiLCAiaW5hY3RpdmUiKSwgbmV3IEZpbHRlcigibmFtZSIsICJlcXVhbCIsICJqaG9uIiksCiAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKCJpZCIsICJlcXVhbCIsIDEyMykpOwogICAgICAgIGZpbmFsIE1hcDxTdHJpbmcsIExpc3Q8RmlsdGVyPj4gbWFwID0gbGlzdC5zdHJlYW0oKQogICAgICAgICAgICAgICAgLmNvbGxlY3QoQ29sbGVjdG9ycy5ncm91cGluZ0J5KEZpbHRlcjo6Z2V0S2V5LCBMaW5rZWRIYXNoTWFwOjpuZXcsIENvbGxlY3RvcnMudG9MaXN0KCkpKTsKICAgICAgICBmaW5hbCBMaXN0PEZpbHRlcj4gcmVzdWx0ID0gbWFwLmVudHJ5U2V0KCkuc3RyZWFtKCkKICAgICAgICAgICAgICAgIC5tYXAoZSAtPiBlLmdldFZhbHVlKCkuc2l6ZSgpID4gMQogICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBGaWx0ZXIoZS5nZXRLZXkoKSwgImluIiwgZS5nZXRWYWx1ZSgpLnN0cmVhbSgpLm1hcChGaWx0ZXI6OmdldFZhbHVlKS50b0FycmF5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgIDogZS5nZXRWYWx1ZSgpLmdldCgwKSkKICAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9MaXN0KCkpOwogICAgICAgIHJlc3VsdC5mb3JFYWNoKFN5c3RlbS5vdXQ6OnByaW50bG4pOwogICAgfQp9CgpjbGFzcyBGaWx0ZXIgewogICAgcHJpdmF0ZSBTdHJpbmcga2V5OwogICAgcHJpdmF0ZSBTdHJpbmcgb3BlcmF0b3I7CiAgICBwcml2YXRlIE9iamVjdCB2YWx1ZTsKCiAgICBwdWJsaWMgRmlsdGVyKFN0cmluZyBrZXksIFN0cmluZyBvcGVyYXRvciwgT2JqZWN0IHZhbHVlKSB7CiAgICAgICAgc3VwZXIoKTsKICAgICAgICB0aGlzLmtleSA9IGtleTsKICAgICAgICB0aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0S2V5KCkgewogICAgICAgIHJldHVybiBrZXk7CiAgICB9CgogICAgcHVibGljIFN0cmluZyBnZXRPcGVyYXRvcigpIHsKICAgICAgICByZXR1cm4gb3BlcmF0b3I7CiAgICB9CgogICAgcHVibGljIE9iamVjdCBnZXRWYWx1ZSgpIHsKICAgICAgICByZXR1cm4gdmFsdWU7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewogICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CiAgICAgICAgYnVpbGRlci5hcHBlbmQoIkZpbHRlciBba2V5PSIpLmFwcGVuZChrZXkpLmFwcGVuZCgiLCBvcGVyYXRvcj0iKS5hcHBlbmQob3BlcmF0b3IpLmFwcGVuZCgiLCB2YWx1ZT0iKQogICAgICAgICAgICAgICAgLmFwcGVuZCh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmdldENsYXNzKCkuaXNBcnJheSgpID8gQXJyYXlzLmRlZXBUb1N0cmluZygoT2JqZWN0W10pdmFsdWUpIDogdmFsdWUpCiAgICAgICAgICAgICAgICAuYXBwZW5kKCJdIik7CiAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgIH0KfQ==