eep... I always forget that there's no ConcurrentHashSet. However you can get one via Collections.newSetFromMap(new ConcurrentHashMap()) On 13/01/16 10:04, Swor, Steve wrote: > My thoughts based on the conversation so far: > > 1. How important is it to expose the duplicates/ordering semantics in the > public API? My preference is to keep it as loose/flexible as possible (e.g. > use Collection unless there is a specific reason to narrow it further in the > public API). > > As far as choosing the implementation, I've come up with a brief decision > tree which should (hopefully) help. > > Must prevent duplicates? > No: > ......Must be thread-safe? > ......Yes: use CopyOnWriteArrayList > ......No: use ArrayList > Yes: > ......Must be thread-safe? > ......No: > ............Must be ordered? > ............No: use HashSet > ............Yes: > ..................Must preserve the order in which objects were added? > ..................No: use TreeSet > ..................Yes: use LinkedHashSet > ....Yes: > ...........Must be ordered? > ...........No: use ConcurrentHashSet > ...........Yes: > .................Must preserve the order in which objects were added? > .................No: use ConcurrentSkipListSet > .................Yes: use CopyOnWriteArraySet > > Cheers, > Steve > > > On 13/01/16 07:03, Matt Sicker wrote: > What about NavigableSet? ;) > > On 12 January 2016 at 13:57, Gary Gregory > <[email protected]<mailto:[email protected]>> wrote: > For completeness' sake: A set can also be ordered: > https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html > > Gary > > On Tue, Jan 12, 2016 at 4:09 AM, Mikael Ståldal > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> > wrote: > List is a Collection with the additional semantics of being ordered. Set is a > Collection with the additional semantics of having no duplicates. > > So is the order of the plugins significant? If not it should be Collection or > Iterable (or possibly Set) rather than List. If the order is significant, we > should keep it as List. > > On Tue, Jan 12, 2016 at 12:59 PM, Mikael Ståldal > <[email protected]<mailto:[email protected]>> wrote: > If you want it more generic, it should be Iterable rather than Iterator. > > On Tue, Jan 12, 2016 at 6:34 AM, sampath kumar > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> > wrote: > You Can still achieve enhanced for loop using iterator by using following > modification. > > I apologize if this thread going in different context. We can go with either > List or Set depending on the Requirement. > > Code Snippet: > > import java.util.HashSet; > import java.util.Iterator; > import java.util.Set; > > public class PluginIterator implements Iterable<PluginIterator.Plugin> { > > static class Plugin { > String name; > Plugin(String name) { > this.name<http://this.name> = name; > } > public String toString() { > return "Plugin{" + name + "}"; > } > } > > Set<Plugin> set = new HashSet<Plugin>(); > > public void addPenguin(Plugin p) { > set.add(p); > } > > public Iterator<Plugin> getPlugins() { > return set.iterator(); > } > > public Iterator<Plugin> iterator() { > return getPlugins(); > } > > public static void main(String args[]) { > PluginIterator pluginIterators = new PluginIterator(); > Plugin plugin1 = new Plugin("Plugin-1"); > Plugin plugin2 = new Plugin("Plugin-2"); > Plugin plugin3 = new Plugin("Plugin-3"); > Plugin plugin4 = new Plugin("Plugin-4"); > pluginIterators.addPenguin(plugin1); > pluginIterators.addPenguin(plugin2); > pluginIterators.addPenguin(plugin3); > pluginIterators.addPenguin(plugin4); > for (Plugin p : pluginIterators) { > System.out.println(p); > } > } > } > > On Tue, Jan 12, 2016 at 10:24 AM, Gary Gregory > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> > wrote: > I dislike this iterator business very much, and you can't use it in a for > each loop. > > Gary > > On Mon, Jan 11, 2016 at 8:46 PM, sampath kumar > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> > wrote: > How about this, Unmodifiable Iterator > > Iterator<String> getPluginPackages(); > > On Tue, Jan 12, 2016 at 9:50 AM, Gary Gregory > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> > wrote: > List<String> getPluginPackages(); > > G > > On Mon, Jan 11, 2016 at 8:12 PM, Paul Benedict > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> > wrote: > > Thu can only use Set if you have a notion of equality and comparison. Do you > for this collection? > > On Jan 11, 2016 9:48 PM, "Gary Gregory" > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> > wrote: > Well, not really, I'd like to express whether the collection allows for > duplicates or not, if not, use a set. > > Gary > > On Mon, Jan 11, 2016 at 7:08 PM, Matt Sicker > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> wrote: > Even a Collection works well for this. > > > On Monday, 11 January 2016, Gary Gregory > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> > wrote: > On Mon, Jan 11, 2016 at 5:19 PM, Ralph Goers > <[email protected]<mailto:[email protected]>> wrote: > It is returning a List already. Does it really matter much? > > It is not indeed critical. It's just a finer point of declaring the intention > of the data model, either duplicates are allowed and expected, or not. > > Gary > > Ralph > > On Jan 11, 2016, at 6:04 PM, Gary Gregory > <[email protected]<mailto:[email protected]>> wrote: > > Should APIs like: > > org.apache.logging.log4j.core.config.Configuration.getPluginPackages() > > really return a List instead of a Set? > > Gary > > -- > E-Mail: [email protected]<mailto:[email protected]> | > [email protected]<mailto:[email protected]> > Java Persistence with Hibernate, Second > Edition<http://www.manning.com/bauer3/> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/> > Spring Batch in Action<http://www.manning.com/templier/> > Blog: <http://garygregory.wordpress.com/> http://garygregory.wordpress.com > Home: <http://garygregory.com/> http://garygregory.com/ > Tweet! <http://twitter.com/GaryGregory> http://twitter.com/GaryGregory > > > > > -- > E-Mail: [email protected]<mailto:[email protected]> | > [email protected]<mailto:[email protected]> > Java Persistence with Hibernate, Second > Edition<http://www.manning.com/bauer3/> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/> > Spring Batch in Action<http://www.manning.com/templier/> > Blog: <http://garygregory.wordpress.com/> http://garygregory.wordpress.com > Home: <http://garygregory.com/> http://garygregory.com/ > Tweet! <http://twitter.com/GaryGregory> http://twitter.com/GaryGregory > > > -- > Matt Sicker > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> > > > > -- > E-Mail: <mailto:[email protected]> > [email protected]<mailto:[email protected]> | > <mailto:[email protected]> [email protected]<mailto:[email protected]> > Java Persistence with Hibernate, Second > Edition<http://www.manning.com/bauer3/> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/> > Spring Batch in Action<http://www.manning.com/templier/> > Blog: <http://garygregory.wordpress.com/> http://garygregory.wordpress.com > Home: <http://garygregory.com/> http://garygregory.com/ > Tweet! <http://twitter.com/GaryGregory> http://twitter.com/GaryGregory > > > > -- > E-Mail: <mailto:[email protected]> > [email protected]<mailto:[email protected]> | > <mailto:[email protected]> [email protected]<mailto:[email protected]> > Java Persistence with Hibernate, Second > Edition<http://www.manning.com/bauer3/> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/> > Spring Batch in Action<http://www.manning.com/templier/> > Blog: <http://garygregory.wordpress.com/> http://garygregory.wordpress.com > Home: <http://garygregory.com/> http://garygregory.com/ > Tweet! <http://twitter.com/GaryGregory> http://twitter.com/GaryGregory > > > > -- > Regards, > Sampath > > > > -- > E-Mail: <mailto:[email protected]> > [email protected]<mailto:[email protected]> | > <mailto:[email protected]> [email protected]<mailto:[email protected]> > Java Persistence with Hibernate, Second > Edition<http://www.manning.com/bauer3/> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/> > Spring Batch in Action<http://www.manning.com/templier/> > Blog: <http://garygregory.wordpress.com/> http://garygregory.wordpress.com > Home: <http://garygregory.com/> http://garygregory.com/ > Tweet! <http://twitter.com/GaryGregory> http://twitter.com/GaryGregory > > > > -- > Regards, > Sampath > > > > -- > > > Mikael Ståldal > Senior software developer > > Magine TV > <mailto:[email protected]>[email protected]<mailto:[email protected]> > Grev Turegatan 3 | 114 46 Stockholm, Sweden | <http://www.magine.com/> > www.magine.com<http://www.magine.com> > > Privileged and/or Confidential Information may be contained in this message. > If you are not the addressee indicated in this message > (or responsible for delivery of the message to such a person), you may not > copy or deliver this message to anyone. In such case, > you should destroy this message and kindly notify the sender by reply email. > > > > -- > > > Mikael Ståldal > Senior software developer > > Magine TV > <mailto:[email protected]>[email protected]<mailto:[email protected]> > Grev Turegatan 3 | 114 46 Stockholm, Sweden | <http://www.magine.com/> > www.magine.com<http://www.magine.com> > > Privileged and/or Confidential Information may be contained in this message. > If you are not the addressee indicated in this message > (or responsible for delivery of the message to such a person), you may not > copy or deliver this message to anyone. In such case, > you should destroy this message and kindly notify the sender by reply email. > > > > -- > E-Mail: [email protected]<mailto:[email protected]> | > <mailto:[email protected]> [email protected]<mailto:[email protected]> > Java Persistence with Hibernate, Second > Edition<http://www.manning.com/bauer3/> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/> > Spring Batch in Action<http://www.manning.com/templier/> > Blog: http://garygregory.wordpress.com<http://garygregory.wordpress.com/> > Home: http://garygregory.com/ > Tweet! http://twitter.com/GaryGregory > > > > -- > Matt Sicker > <<mailto:[email protected]>[email protected]<mailto:[email protected]>> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
