The other reason a List sometimes gets used is when you want to be able to arbitrarily order the elements. If you're using the natural ordering or can write a comparator, you can use a SortedSet, but if you need them to be reorderable, I don't know of a Collection that allows arbitrary ordering but enforces the Set semantic of not allowing duplicates. List also makes it easier to ensure that elements stay in insertion order, though it's possible to get that in other Collections such as a SortedMap<Date, T>.
I don't think that there's a need to arbitrarily reorder any of those three Collections you're changing, but you need to make sure none of them had code that relied on inserting elements in sorted order and then having them maintaining that order. I could easily see your changes resulting in jumbled displays in the JMX beans (though maybe there's code that sorts them at display time so maybe it's not a problem), so make sure you test that thoroughly. Also, why are you doing Collections.newSetFromMap( new ConcurrentHashMap<T,Boolean>()) instead of just new Concurrent HashSet<T>()? That seems super convoluted and ultimately not threadsafe despite appearing to be; am I missing something? Tim On May 7, 2015 6:38 AM, "Gary Tully" <gary.tu...@gmail.com> wrote: > those changes look ok to me, as in they won't break anything and you > have numbers that can make your case. Please splash in a patch or PR. > > On 2 May 2015 at 23:08, Kevin Burton <bur...@spinn3r.com> wrote: > > I’ve found 3 places where CopyOnWriteArrayList was being used and causing > > significant performance impact O(N^2) when using large numbers of queues. > > > > Could I get feedback on these 3 changes? > > > > > https://github.com/spinn3r/activemq/commit/06ebfbf2a4d9201b57069644bdb7eb8274da0714 > > > > > https://github.com/spinn3r/activemq/commit/13f606d597b826f5a998866e0fe63e63aa278a24 > > > > In both of these situations, I think a Set is a better idea than a List. > > First, it’s faster. Second, why would we want to cousin something twice? > > That’s the only reason I would think a List would be used instead of a > Set. > > > > > > > > -- > > > > Founder/CEO Spinn3r.com > > Location: *San Francisco, CA* > > blog: http://burtonator.wordpress.com > > … or check out my Google+ profile > > <https://plus.google.com/102718274791889610666/posts> >