是否建议将Collections.unmodifiableList()结果缓存到字段中?

tro*_*zen 3 java collections performance caching immutability

推荐的方法是哪一个:

private final List<Object> list = new ArrayList<>();

public List<Object> getListView() {
    return Collections.unmodifiableList(list);
}
Run Code Online (Sandbox Code Playgroud)

要么

private final List<Object> list = new ArrayList<>();
private final List<Object> listView = Collections.unmodifiableList(list);

public List<Object> getListView() {
    return listView;
}
Run Code Online (Sandbox Code Playgroud)

后者节省了对象创建,但值得努力吗?

Mur*_*nik 5

创建一个unmodifiableList是O(1)操作(实质上,它实例化一个java.util.Collections$UnmodifiableList并将您的列表分配给一个数据库).

除非你有一个非常有说服力的特殊情况的基准来表明相反的情况,否则它可能不值得缓存它的麻烦.