Примечание. Возврат набора и возвращение списка имеют различные последствия.
В наборе нет дубликатов и нет заявленного порядка. Добавление элемента в набор может привести к другому порядку элементов.
Список может содержать дубликаты, и добавление элемента не изменяет (как правило) общий порядок списка.
Что касается того, как вы возвращаете список, я бы использовал первую форму:
public List<Item> getItems()
{
return Collections.unmodifiableList(this.myItems);
}
Я не могу вспомнить ситуацию, когда последняя форма принесет какую-либо пользу. Список не похож на массив, где пространство может быть предварительно выделено. Таким образом, нет снижения производительности за счет передачи списка.