Java 9 提供了一种创建空不可变列表、集合和映射的方法。
List list = List.of();
Set set = Set.of();
Map map = Map.of();
但我无法理解创建空的不可变列表/集合/映射的实际用例是什么。
请帮助我理解空的不可变列表/集合/映射的实际用例。
想象一下应该对这些集合进行常规数学运算。就像计算列表的交集。结果可以为空,在这种情况下,如果结果应该是,则此方法会很有用不可变的.
public List<E> intersectLists(List<E> first, List<E> second) {
// If one is empty, return empty list
if (first.isEmpty() || second.isEmpty()) {
// Before Java 9: return Collections.emptyList();
return List.of();
}
// Compute intersection
...
}
不可变的当您通过 getter 公开内部数据结构但不希望调用者能够操作集合时,通常会使用集合。
类似的变体是不可修改的收藏。如果您直接引用位于包装器下方的可变集合,则可以对它们进行操作。通过这种方式,您可以强制用户使用您指定的方法进行操作。
public Graph {
private List<Node> nodes;
// Other stuff
...
public List<Node> getNodes() {
// Wrap container to make list unmodifiable
return Collections.unmodifiableList(nodes);
}
// User should use designated methods to manipulate instead
public void addNode(Node node) { ... }
public void removeNode(Node node) { ... }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)