We run on Java 7 Matt.

Ralph

> On Jan 12, 2016, at 4:14 PM, Matt Sicker <[email protected]> wrote:
> 
> Java 8 added a neat shortcut for that, too: 
> http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html#newKeySet--
>  
> <http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html#newKeySet-->
> 
> On 12 January 2016 at 17:06, Swor, Steve <[email protected] 
> <mailto:[email protected]>> wrote:
> 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]><mailto:[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 
> > <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] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[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]><mailto:[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] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[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/><http://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] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[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] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[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] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>> wrote:
> > List<String> getPluginPackages();
> >
> > G
> >
> > On Mon, Jan 11, 2016 at 8:12 PM, Paul Benedict 
> > <<mailto:[email protected] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[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] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[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] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>> wrote:
> > Even a Collection works well for this.
> >
> >
> > On Monday, 11 January 2016, Gary Gregory <<mailto:[email protected] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>> wrote:
> > On Mon, Jan 11, 2016 at 5:19 PM, Ralph Goers <[email protected] 
> > <mailto:[email protected]><mailto:[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]><mailto:[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]><mailto:[email protected] 
> > <mailto:[email protected]>> | [email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>
> > Java Persistence with Hibernate, Second 
> > Edition<http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>>
> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/ 
> > <http://www.manning.com/tahchiev/>>
> > Spring Batch in Action<http://www.manning.com/templier/ 
> > <http://www.manning.com/templier/>>
> > Blog: <http://garygregory.wordpress.com/ 
> > <http://garygregory.wordpress.com/>> http://garygregory.wordpress.com 
> > <http://garygregory.wordpress.com/>
> > Home: <http://garygregory.com/ <http://garygregory.com/>> 
> > http://garygregory.com/ <http://garygregory.com/>
> > Tweet! <http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>> 
> > http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
> >
> >
> >
> >
> > --
> > E-Mail: [email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>> | [email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>
> > Java Persistence with Hibernate, Second 
> > Edition<http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>>
> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/ 
> > <http://www.manning.com/tahchiev/>>
> > Spring Batch in Action<http://www.manning.com/templier/ 
> > <http://www.manning.com/templier/>>
> > Blog: <http://garygregory.wordpress.com/ 
> > <http://garygregory.wordpress.com/>> http://garygregory.wordpress.com 
> > <http://garygregory.wordpress.com/>
> > Home: <http://garygregory.com/ <http://garygregory.com/>> 
> > http://garygregory.com/ <http://garygregory.com/>
> > Tweet! <http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>> 
> > http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
> >
> >
> > --
> > Matt Sicker <<mailto:[email protected] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>>
> >
> >
> >
> > --
> > E-Mail: <mailto:[email protected] <mailto:[email protected]>> 
> > [email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>> | <mailto:[email protected] 
> > <mailto:[email protected]>> [email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>
> > Java Persistence with Hibernate, Second 
> > Edition<http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>>
> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/ 
> > <http://www.manning.com/tahchiev/>>
> > Spring Batch in Action<http://www.manning.com/templier/ 
> > <http://www.manning.com/templier/>>
> > Blog: <http://garygregory.wordpress.com/ 
> > <http://garygregory.wordpress.com/>> http://garygregory.wordpress.com 
> > <http://garygregory.wordpress.com/>
> > Home: <http://garygregory.com/ <http://garygregory.com/>> 
> > http://garygregory.com/ <http://garygregory.com/>
> > Tweet! <http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>> 
> > http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
> >
> >
> >
> > --
> > E-Mail: <mailto:[email protected] <mailto:[email protected]>> 
> > [email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>> | <mailto:[email protected] 
> > <mailto:[email protected]>> [email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>
> > Java Persistence with Hibernate, Second 
> > Edition<http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>>
> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/ 
> > <http://www.manning.com/tahchiev/>>
> > Spring Batch in Action<http://www.manning.com/templier/ 
> > <http://www.manning.com/templier/>>
> > Blog: <http://garygregory.wordpress.com/ 
> > <http://garygregory.wordpress.com/>> http://garygregory.wordpress.com 
> > <http://garygregory.wordpress.com/>
> > Home: <http://garygregory.com/ <http://garygregory.com/>> 
> > http://garygregory.com/ <http://garygregory.com/>
> > Tweet! <http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>> 
> > http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
> >
> >
> >
> > --
> > Regards,
> > Sampath
> >
> >
> >
> > --
> > E-Mail: <mailto:[email protected] <mailto:[email protected]>> 
> > [email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>> | <mailto:[email protected] 
> > <mailto:[email protected]>> [email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>
> > Java Persistence with Hibernate, Second 
> > Edition<http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>>
> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/ 
> > <http://www.manning.com/tahchiev/>>
> > Spring Batch in Action<http://www.manning.com/templier/ 
> > <http://www.manning.com/templier/>>
> > Blog: <http://garygregory.wordpress.com/ 
> > <http://garygregory.wordpress.com/>> http://garygregory.wordpress.com 
> > <http://garygregory.wordpress.com/>
> > Home: <http://garygregory.com/ <http://garygregory.com/>> 
> > http://garygregory.com/ <http://garygregory.com/>
> > Tweet! <http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>> 
> > http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>
> >
> >
> >
> > --
> > Regards,
> > Sampath
> >
> >
> >
> > --
> >
> >
> > Mikael Ståldal
> > Senior software developer
> >
> > Magine TV
> > <mailto:[email protected] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>
> > Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   <http://www.magine.com/ 
> > <http://www.magine.com/>> www.magine.com 
> > <http://www.magine.com/><http://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] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>
> > Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   <http://www.magine.com/ 
> > <http://www.magine.com/>> www.magine.com 
> > <http://www.magine.com/><http://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] 
> > <mailto:[email protected]>> | <mailto:[email protected] 
> > <mailto:[email protected]>> [email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>
> > Java Persistence with Hibernate, Second 
> > Edition<http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>>
> > JUnit in Action, Second Edition<http://www.manning.com/tahchiev/ 
> > <http://www.manning.com/tahchiev/>>
> > Spring Batch in Action<http://www.manning.com/templier/ 
> > <http://www.manning.com/templier/>>
> > Blog: http://garygregory.wordpress.com 
> > <http://garygregory.wordpress.com/><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] 
> > <mailto:[email protected]>>[email protected] 
> > <mailto:[email protected]><mailto:[email protected] 
> > <mailto:[email protected]>>>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected] 
> > <mailto:[email protected]>
> > For additional commands, e-mail: [email protected] 
> > <mailto:[email protected]>
> >
> >
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected] 
> <mailto:[email protected]>
> For additional commands, e-mail: [email protected] 
> <mailto:[email protected]>
> 
> 
> 
> 
> -- 
> Matt Sicker <[email protected] <mailto:[email protected]>>

Reply via email to