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]

Reply via email to