package org.codefx.libfx.collection.transform; import java.util.Set; /** * Demonstrates how to use the {@link EqualityTransformingSet}. * <p> * The demonstrated example is based on the situation that we want a set of strings which uses only their length for * equality comparison. */ public class EqualityTransformingSetDemo { /** * A set of strings which uses the length for equality. */ private final Set<String> lengthSet; /** * Creates a new demo. */ public EqualityTransformingSetDemo() { lengthSet = EqualityTransformingCollectionBuilder .forType(String.class) .withEquals((a, b) -> a.length() == b.length()) .withHash(String::length) .buildSet(); } /** * Runs this demo. * * @param args * command line arguments (will not be used) */ public static void main(String[] args) { EqualityTransformingSetDemo demo = new EqualityTransformingSetDemo(); demo.addSomeElements(); } private void addSomeElements() { print("-- Adding some elements --"); print(); lengthSet.add("a"); lengthSet.add("b"); print(lengthSet.toString()); } private static void print() { System.out.println(); } private static void print(String text) { System.out.println(text); } }