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==
				
				
				
				
				
			 
			
				
			
			
				
	
		
		
	
	
		Filter [key=status, operator=in, value=[active, inactive]]
Filter [key=name, operator=equal, value=jhon]
Filter [key=id, operator=equal, value=123]