@Singular snippet

With Lombok

01 import lombok.Builder;
02 import lombok.Singular;
03 import java.util.Collection;
04 import java.util.Set;
05 import java.util.SortedMap;
06 import com.google.common.collect.ImmutableList;
07 
08 @Builder
09 public class SingularExample<T extends Number> {
10   private @Singular Set<String> occupations;
11   private @Singular("axis"ImmutableList<String> axes;
12   private @Singular SortedMap<Integer, T> elves;
13   private @Singular Collection<?> minutiae;
14 }

Vanilla Java

001 import java.util.Collection;
002 import java.util.Set;
003 import java.util.SortedMap;
004 import com.google.common.collect.ImmutableList;
005 
006 public class SingularExample<T extends Number> {
007   private Set<String> occupations;
008   private ImmutableList<String> axes;
009   private SortedMap<Integer, T> elves;
010   private Collection<?> minutiae;
011   
012   SingularExample(Set<String> occupations, ImmutableList<String> axes, SortedMap<Integer, T> elves, Collection<?> minutiae) {
013     this.occupations = occupations;
014     this.axes = axes;
015     this.elves = elves;
016     this.minutiae = minutiae;
017   }
018   
019   public static class SingularExampleBuilder<T extends Number> {
020     private java.util.ArrayList<String> occupations;
021     private com.google.common.collect.ImmutableList.Builder<String> axes;
022     private java.util.ArrayList<Integer> elves$key;
023     private java.util.ArrayList<T> elves$value;
024     private java.util.ArrayList<java.lang.Object> minutiae;
025     
026     SingularExampleBuilder() {
027     }
028     
029     public SingularExampleBuilder<T> occupation(String occupation) {
030       if (this.occupations == null) {
031         this.occupations = new java.util.ArrayList<String>();
032       }
033       
034       this.occupations.add(occupation);
035       return this;
036     }
037     
038     @java.lang.SuppressWarnings("all")
039     public SingularExampleBuilder<T> occupations(java.util.Collection<? extends String> occupations) {
040       if (this.occupations == null) {
041         this.occupations = new java.util.ArrayList<String>();
042       }
043       
044       this.occupations.addAll(occupations);
045       return this;
046     }
047     
048     public SingularExampleBuilder<T> axis(String axis) {
049       if (this.axes == null) {
050         this.axes = com.google.common.collect.ImmutableList.builder();
051       }
052       
053       this.axes.add(axis);
054       return this;
055     }
056     
057     public SingularExampleBuilder<T> axes(java.lang.Iterable<? extends String> axes) {
058       if (this.axes == null) {
059         this.axes = com.google.common.collect.ImmutableList.builder();
060       }
061       
062       this.axes.addAll(axes);
063       return this;
064     }
065     
066     public SingularExampleBuilder<T> elf(Integer elfKey, T elfValue) {
067       if (this.elves$key == null) {
068         this.elves$key = new java.util.ArrayList<Integer>();
069         this.elves$value = new java.util.ArrayList<T>();
070       }
071       
072       this.elves$key.add(elfKey);
073       this.elves$value.add(elfValue);
074       return this;
075     }
076     
077     public SingularExampleBuilder<T> elves(java.util.Map<? extends Integer, ? extends T> elves) {
078       if (this.elves$key == null) {
079         this.elves$key = new java.util.ArrayList<Integer>();
080         this.elves$value = new java.util.ArrayList<T>();
081       }
082       
083       for (java.util.Map.Entry<? extends Integer, ? extends T> $lombokEntry : elves.entrySet()) {
084         this.elves$key.add($lombokEntry.getKey());
085         this.elves$value.add($lombokEntry.getValue());
086       }
087       return this;
088     }
089     
090     public SingularExampleBuilder<T> minutia(java.lang.Object minutia) {
091       if (this.minutiae == null) {
092         this.minutiae = new java.util.ArrayList<java.lang.Object>();
093       }
094       
095       this.minutiae.add(minutia);
096       return this;
097     }
098     
099     public SingularExampleBuilder<T> minutiae(java.util.Collection<?> minutiae) {
100       if (this.minutiae == null) {
101         this.minutiae = new java.util.ArrayList<java.lang.Object>();
102       }
103       
104       this.minutiae.addAll(minutiae);
105       return this;
106     }
107     
108     public SingularExample<T> build() {
109       java.util.Set<String> occupations;
110       switch (this.occupations == null this.occupations.size()) {
111       case 0
112         occupations = java.util.Collections.emptySet();
113         break;
114       
115       case 1
116         occupations = java.util.Collections.singleton(this.occupations.get(0));
117         break;
118       
119       default
120         occupations = new java.util.LinkedHashSet<String>(this.occupations.size() 1073741824 this.occupations.size() (this.occupations.size() 3: java.lang.Integer.MAX_VALUE);
121         occupations.addAll(this.occupations);
122         occupations = java.util.Collections.unmodifiableSet(occupations);
123       
124       }
125       
126       com.google.common.collect.ImmutableList<String> axes = this.axes == null ? com.google.common.collect.ImmutableList.<String>of() this.axes.build();
127       
128       java.util.SortedMap<Integer, T> elves = new java.util.TreeMap<Integer, T>();
129       if (this.elves$key != nullfor (int $i = 0; $i < (this.elves$key == null this.elves$key.size()); $i++elves.put(this.elves$key.get($i)this.elves$value.get($i));
130       elves = java.util.Collections.unmodifiableSortedMap(elves);
131       
132       java.util.Collection<java.lang.Object> minutiae;
133       switch (this.minutiae == null this.minutiae.size()) {
134       case 0
135         minutiae = java.util.Collections.emptyList();
136         break;
137       
138       case 1
139         minutiae = java.util.Collections.singletonList(this.minutiae.get(0));
140         break;
141       
142       default
143         minutiae = java.util.Collections.unmodifiableList(new java.util.ArrayList<java.lang.Object>(this.minutiae));
144       
145       }
146       
147       return new SingularExample<T>(occupations, axes, elves, minutiae);
148     }
149     
150     @java.lang.Override
151     public java.lang.String toString() {
152       return "SingularExample.SingularExampleBuilder(occupations=" this.occupations + ", axes=" this.axes + ", elves$key=" this.elves$key + ", elves$value=" this.elves$value + ", minutiae=" this.minutiae + ")";
153     }
154   }
155   
156   @java.lang.SuppressWarnings("all")
157   public static <T extends Number> SingularExampleBuilder<T> builder() {
158     return new SingularExampleBuilder<T>();
159   }
160 }