DulcetAirman icon

tree

DulcetAirman | PRO | 11/13/18 11:27:20 AM UTC | 0 ⭐ | 910 👁️ | Never ⏰ | []
Java |

1.19 KB

|

None

|

0 👍

/

0 👎

package ch.claude_martin.foo;
 
import java.util.*;
 
public class SomeClass implements Comparable<SomeClass> {
 
    private static Comparator<SomeClass> COMPARATOR = Comparator.comparing(SomeClass::getCode).thenComparing(SomeClass::getName);
    
    private final String name, code;
    private final NavigableSet<SomeClass> children = new TreeSet<SomeClass>();
    private final SomeClass parent;
 
    // doesn't have to be public. only factory needs access.
    SomeClass(SomeClass parent, String name, String code) {
        this.parent = parent;
        this.name = name;
        this.code = code;
 
    }
 
    // Creates a root
    SomeClass(String name, String code) {
        this(null, name, code);
    }
 
    // doesn't have to be public. only factory needs access.
    void addChild(SomeClass child) {
        this.children.add(child);
    }
 
    public NavigableSet<SomeClass> getChildren() {
        return new TreeSet<>(this.children); // return defensive copy
    }
 
    public Optional<SomeClass> getParent() {
        return Optional.ofNullable(this.parent);
    }
    
    public String getName() {
        return name;
    }
    
    public String getCode() {
        return code;
    }
 
    @Override
    public int compareTo(SomeClass o) {
        return COMPARATOR.compare(this, o);
    }
 
}

Comments