Source of SetDemo.java


  1: //SetDemo.java

  3: import java.util.function.Function;
  4: import java.util.function.Predicate;

  6: class EvenPredicate implements Predicate<Integer>
  7: {
  8:     public boolean test(Integer value)
  9:     {
 10:         return (int)value % 2 == 0;
 11:     }
 12: }

 14: class Over50Predicate implements Predicate<Integer>
 15: {
 16:     public boolean test(Integer value)
 17:     {
 18:         return value > 50;
 19:     }
 20: }

 22: class MapTimes10 implements Function<Integer, Integer>
 23: {
 24:     public Integer apply(Integer value)
 25:     {
 26:         return value * 10;
 27:     }
 28: }

 30: class MapMod10 implements Function<Integer, Integer>
 31: {
 32:     public Integer apply(Integer value)
 33:     {
 34:         return value % 10;
 35:     }
 36: }

 38: public class SetDemo
 39: {
 40:     private static void showSet
 41:     (
 42:         Set set,
 43:         String setName
 44:     )
 45:     {
 46:         System.out.printf("%s: ", setName);
 47:         for (Integer element : set)
 48:         {
 49:             System.out.print(element.toString() + " ");
 50:         }
 51:         System.out.println();
 52:     }

 54:     public static void main(String[] args)
 55:     {
 56:         int[] setAElements = { 95, 64, 19, 67, -24, 90 };
 57:         int[] setBElements = { 67, 90, 67, 42, -84 };

 59:         Set setA = new Set();
 60:         for (int element : setAElements)
 61:         {
 62:             setA.add(element);
 63:         }
 64:         Set setB = new Set();
 65:         for (int element : setBElements)
 66:         {
 67:             setB.add(element);
 68:         }

 70:         // Display the 2 sets
 71:         showSet(setA, "Set A");
 72:         showSet(setB, "Set B");

 74:         // Perform union, intersection, and difference of 2 sets
 75:         showSet(setA.union(setB), "A union B");
 76:         showSet(setA.intersection(setB), "A intersect B");
 77:         showSet(setA.difference(setB), "A \\ B");
 78:         showSet(setB.difference(setA), "B \\ A");

 80:         // Perform various filter operations
 81:         EvenPredicate evenPredicate = new EvenPredicate();
 82:         showSet(setA.filter(evenPredicate), "Set A filtered for evens");
 83:         showSet(setB.filter(evenPredicate), "Set B filtered for evens");
 84:         Over50Predicate over50Predicate = new Over50Predicate();
 85:         showSet
 86:         (
 87:             setA.filter(over50Predicate),
 88:             "Set A filtered for elements > 50"
 89:         );
 90:         showSet
 91:         (
 92:             setB.filter(over50Predicate),
 93:             "Set B filtered for elements > 50"
 94:         );

 96:         // Perform various map operations
 97:         MapTimes10 mapTimes10 = new MapTimes10();
 98:         showSet(setA.map(mapTimes10), "Set A mapped * 10");
 99:         showSet(setB.map(mapTimes10), "Set B mapped * 10");
100:         MapMod10 mapMod10 = new MapMod10();
101:         showSet(setA.map(mapMod10), "Set A mapped % 10");
102:         showSet(setB.map(mapMod10), "Set B mapped % 10");
103:     }
104: }