Вы можете избежать написания нескольких операторов switch
и иметь идентификатор / ключ в самом классе, который помогает понять, установлены ли определенные свойства.
Пример:
DemoClass (3 атрибута для упрощения)
public class DemoClass {
public String property1 = null;
public String property2 = null;
public String property3 = null;
public String getKey() {
StringBuilder sb = new StringBuilder();
sb.append(this.property1 != null ? "PROPERTY1" : "").append("|");
sb.append(this.property2 != null ? "PROPERTY2" : "").append("|");
sb.append(this.property3 != null ? "PROPERTY3" : "").append("|");
return sb.toString();
}
}
Над полями можно заполнить различными способами, такими как overloaded constructors
или setter
методы.
Теперь, когда вы хотите разделить на группы, вы можете использовать HashMap и добавлять объекты класса в список на основе значения их ключей, как показано ниже
Map<String, List<DemoClass>> map = new HashMap<>();
for (DemoClass demoClass : demoClasses) {
map.computeIfAbsent(demoClass.getKey(), k -> new ArrayList<>()).add(demoClass);
}