У меня нет "default", хотя я полагаю, что чаще использую реализации, перечисленные в вопросе. Я думаю о том, что подходит для какой-то конкретной проблемы, над которой я работаю, и использую ее. Я не просто слепо по умолчанию использую ArrayList
, я потратил 30 секунд на мысли «хорошо, я собираюсь сделать много итераций и удалять элементы в середине этого списка, поэтому я должен используйте LinkedList
".
И я почти всегда использую тип интерфейса для справки, а не для реализации. Помните, что List
- не единственный интерфейс, который реализует LinkedList
. Я вижу это много:
LinkedList<Item> queue = new LinkedList<Item>();
когда то, что имел в виду программист было:
Queue<Item> queue = new LinkedList<Item>();
Я также использую интерфейс Iterable
изрядное количество.