import java.util.*;
import java.io.*;
import java.util.stream.*;

class Main
{
	public static void main(String[] args) throws IOException {
        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 {
    private String key;
    private String operator;
    private Object value;

    public Filter(String key, String operator, Object value) {
        super();
        this.key = key;
        this.operator = operator;
        this.value = value;
    }

    public String getKey() {
        return key;
    }

    public String getOperator() {
        return operator;
    }

    public Object getValue() {
        return value;
    }

    @Override
    public String toString() {
        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();
    }
}