On Thu, 23 Mar 2023 21:44:56 GMT, Sergey Bylokhov <[email protected]> wrote:
>> Method `'java.awt.MenuBar#shortcuts` creates a 'Vector<MenuShortcut>', fills
>> it and then returns its 'Enumeration elements()' as return value.
>> Instead of usage of legacy synchronized Vector here we can use ArrayList
>> instead. Wrap it in Collections.enumeration to adapt to 'Enumeration' result
>> type.
>
> src/java.desktop/share/classes/java/awt/MenuBar.java line 350:
>
>> 348: }
>> 349: }
>> 350: return shortcuts.elements();
>
> Can you please confirm the old and new enumerations have the same behavior
> during iteration/adding/removing/etc elements?
Behavior is the same.
`Enumeration` doesn't have `remove` method. Only `hasMoreElements` and
`nextElement`.
Method creates a new collection for result each time, hence no updates of
underlying collection are possible.
Iteration order is the same too.
Vector<String> v = new Vector<>();
v.add("123");
v.add("444");
v.add("555");
v.add("666");
Enumeration<String> elements = v.elements();
while (elements.hasMoreElements()) {
String s = elements.nextElement();
System.out.println(s);
}
System.out.println();
ArrayList<String> a = new ArrayList<>(v);
Enumeration<String> e = Collections.enumeration(a);
while (e.hasMoreElements()) {
String s = e.nextElement();
System.out.println(s);
}
gives
123
444
555
666
123
444
555
666
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13149#discussion_r1147173563