Correct (and best) collection type for listeners in Java
<p>I just want to introduce a small observer pattern (listeners) in one of my classes, and I want to use the best-practice approach.</p>

<p>My listener interface:</p>

<pre><code>public interface ExpansionListener {
    void expanded();
    void collapsed();
}
</code></pre>

<p>Therefore, I want to keep a list of listeners</p>

<pre><code>private List listener; // What kind of list should I take?
</code></pre>

<p>and two methods <code>addListener(ExpansionListener l)</code> and <code>removeListener(ExpansionListener l)</code>.</p>

<p>Now, my <strong>question:</strong> What kind of list should I take? I thought about using a concurrent list like <a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/CopyOnWriteArrayList.html">CopyOnWriteArrayList</a>, but I found out that also <a href="https://docs.oracle.com/javase/7/docs/api/javax/swing/event/EventListenerList.html">EventListenerList</a> exists. What is the best-practice approach for listener-lists in Java?</p>