Collections
emptyList
返回一个空的,不可变的List
- 避免空指针异常
- 语义清晰
singletonList
返回一个单个元素、不可变的list
- 只传递包含一个元素的list,且不希望接收方修改它
- 需要高性能的不可变的单个元素的list
java
Collections.SingletonList("hello")
map
不可变map
只有值是不可变对象的时候 map才是真正的不可变 否则原对象改变的时候map还是可变的
- Collections.unmodifiableMap(map);
- ImmutableMap.copyOf(map); // since jdk 10
- Map.copyOf(map);
java
@Slf4j
public class ShallowImmutableMap {
public static void main(String[] args) {
final HashMap<String, Person> map = new HashMap<>();
final Person jasper = new Person(1, "jasper");
final Person cliff = new Person(2, "cliff");
map.put("1",jasper);
map.put("2",cliff);
jasper.setName("jasper1");
final Map<String, Person> collectionsMap = Collections.unmodifiableMap(map);
log.info("collectionMap:{}", collectionsMap);
final ImmutableMap<String, Person> guavaMap = ImmutableMap.copyOf(map);
log.info("guavaMap:{}", guavaMap);
// since jdk 10
final Map<String, Person> mapMap = Map.copyOf(map);
log.info("mapMap:{}", mapMap);
}
}