Какой использовать вектор или список (ArrayList) при создании собственного макета для свинга?

Я работаю над созданием пользовательского макета для приложения, так как я не могу реализовать эту функциональность, используя существующие макеты, такие как CardLayout.

Мне нужно хранить различные Component экземпляры в коллекции. Как я вижу в CardLayout исходном коде, они использовали Vector для хранения Card экземпляров.

Изучив множество ответов на StackOverflow, я понял, что мы должны использовать ArrayList вместо Vector. Но какой из них мы должны предпочесть в случае приложений, связанных с графическим интерфейсом пользователя, таких как хранение Component экземпляров в LayoutManager.


person Akshat    schedule 24.01.2015    source источник
comment
Как вы думаете, почему имеет значение, создаете вы приложение с графическим интерфейсом или нет? CardLayout использует Vector, потому что он был написан, когда List не существовал.   -  person JB Nizet    schedule 24.01.2015
comment
Я думал, что, поскольку все события в Swing выполняются в потоке EDT, поэтому в сценарии приложения с графическим пользовательским интерфейсом коллекция не должна быть потокобезопасной для хранения компонентов. Так что в этом случае ArrayList будет лучше !!   -  person Akshat    schedule 24.01.2015
comment
@JBNizet Как сегодня, нам стоит перейти на List? :П   -  person Akshat    schedule 24.01.2015
comment
Вы сами сказали: Я понял, что мы должны использовать ArrayList вместо Vector   -  person JB Nizet    schedule 24.01.2015
comment
Ok. Есть еще одна небольшая проблема, с которой я столкнулся. Мне нужно получить ключ из HashMap, значение которого известно. Насколько я знаю, для этого не существует метода или это не считается хорошей практикой!   -  person Akshat    schedule 24.01.2015
comment
Это не имеет ничего общего с вашим вопросом. Но если это то, что вам нужно, вам, вероятно, следует иметь Map ‹V, K› вместо Map ‹K, V›. Или BiMap. Не забывайте, что может быть несколько ключей с одинаковым значением.   -  person JB Nizet    schedule 24.01.2015
comment
@trashgod Спасибо, что указали! Я уже видел твой ответ! А для реализации функции назад / вперед мне нужна полнофункциональная навигация с очередью назад / вперед и поддержкой хлебных крошек! И я почти закончил с макетом! : D   -  person Akshat    schedule 24.01.2015
comment
Обратите внимание, как answer @ camickr внутренне использует List<JComponent>.   -  person trashgod    schedule 24.01.2015