import java.util.List; public class Connaissance { String nom; Condition visible; List descriptions; public Connaissance( String nom, Condition visible, List descriptions) { this.nom = nom; this.visible = visible; this.descriptions = descriptions; } @Override public String toString() { for (Description d : this.descriptions) { if (d.condition.evaluer()) { return this.nom + " (" + d + ")"; } } return "(no description)"; } public static Connaissance search(List list, String name) { return list.stream().filter(o -> o.nom.equals(name)).findFirst() .orElseThrow(() -> new IllegalArgumentException("No data found")); } }