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
<Boolean, List
<Filter
>> parts
= list.
stream() .collect(Collectors.partitioningBy(f -> "status".equals(f.getKey())));
final Object[] statuses
= parts.
get(true).
stream().
map(Filter
::getValue
).
toArray(); final List<Filter> result = parts.get(false);
if (statuses.length != 0) {
result.add(0, new Filter("status", "in", statuses));
}
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();
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwppbXBvcnQgamF2YS51dGlsLnN0cmVhbS4qOwoKY2xhc3MgTWFpbgp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgIGZpbmFsIExpc3Q8RmlsdGVyPiBsaXN0ID0gQXJyYXlzLmFzTGlzdChuZXcgRmlsdGVyKCJzdGF0dXMiLCAiZXF1YWwiLCAiYWN0aXZlIiksCiAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKCJzdGF0dXMiLCAiZXF1YWwiLCAiaW5hY3RpdmUiKSwgbmV3IEZpbHRlcigibmFtZSIsICJlcXVhbCIsICJqaG9uIiksCiAgICAgICAgICAgICAgICBuZXcgRmlsdGVyKCJpZCIsICJlcXVhbCIsIDEyMykpOwogICAgICAgIGZpbmFsIE1hcDxCb29sZWFuLCBMaXN0PEZpbHRlcj4+IHBhcnRzID0gbGlzdC5zdHJlYW0oKQogICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMucGFydGl0aW9uaW5nQnkoZiAtPiAic3RhdHVzIi5lcXVhbHMoZi5nZXRLZXkoKSkpKTsKCQlmaW5hbCBPYmplY3RbXSBzdGF0dXNlcyA9IHBhcnRzLmdldCh0cnVlKS5zdHJlYW0oKS5tYXAoRmlsdGVyOjpnZXRWYWx1ZSkudG9BcnJheSgpOwoJCWZpbmFsIExpc3Q8RmlsdGVyPiByZXN1bHQgPSBwYXJ0cy5nZXQoZmFsc2UpOwoJCWlmIChzdGF0dXNlcy5sZW5ndGggIT0gMCkgewoJCSAgICByZXN1bHQuYWRkKDAsIG5ldyBGaWx0ZXIoInN0YXR1cyIsICJpbiIsIHN0YXR1c2VzKSk7CgkJfQogICAgICAgIHJlc3VsdC5mb3JFYWNoKFN5c3RlbS5vdXQ6OnByaW50bG4pOwogICAgfQp9CgpjbGFzcyBGaWx0ZXIgewogICAgcHJpdmF0ZSBTdHJpbmcga2V5OwogICAgcHJpdmF0ZSBTdHJpbmcgb3BlcmF0b3I7CiAgICBwcml2YXRlIE9iamVjdCB2YWx1ZTsKCiAgICBwdWJsaWMgRmlsdGVyKFN0cmluZyBrZXksIFN0cmluZyBvcGVyYXRvciwgT2JqZWN0IHZhbHVlKSB7CiAgICAgICAgc3VwZXIoKTsKICAgICAgICB0aGlzLmtleSA9IGtleTsKICAgICAgICB0aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0S2V5KCkgewogICAgICAgIHJldHVybiBrZXk7CiAgICB9CgogICAgcHVibGljIFN0cmluZyBnZXRPcGVyYXRvcigpIHsKICAgICAgICByZXR1cm4gb3BlcmF0b3I7CiAgICB9CgogICAgcHVibGljIE9iamVjdCBnZXRWYWx1ZSgpIHsKICAgICAgICByZXR1cm4gdmFsdWU7CiAgICB9CgogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewogICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CiAgICAgICAgYnVpbGRlci5hcHBlbmQoIkZpbHRlciBba2V5PSIpLmFwcGVuZChrZXkpLmFwcGVuZCgiLCBvcGVyYXRvcj0iKS5hcHBlbmQob3BlcmF0b3IpLmFwcGVuZCgiLCB2YWx1ZT0iKQogICAgICAgICAgICAgICAgLmFwcGVuZCh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmdldENsYXNzKCkuaXNBcnJheSgpID8gQXJyYXlzLmRlZXBUb1N0cmluZygoT2JqZWN0W10pdmFsdWUpIDogdmFsdWUpCiAgICAgICAgICAgICAgICAuYXBwZW5kKCJdIik7CiAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKICAgIH0KfQ==