java中构造不可变map
时间: 2023-11-29 10:21:25 浏览: 61
在Java中,可以使用Collections.unmodifiableMap()方法创建不可变map。这个方法将一个可变的map转换成一个不可变的map,该方法返回一个包装器对象,该对象实现了Map接口,但不支持修改操作,任何修改操作都会抛出UnsupportedOperationException异常。
下面是一个示例代码:
```java
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class ImmutableMap {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
Map<String, Integer> immutableMap = Collections.unmodifiableMap(map);
System.out.println(immutableMap.get("a")); // Output: 1
System.out.println(immutableMap.size()); // Output: 3
immutableMap.put("d", 4); // Throws UnsupportedOperationException
}
}
```
在这段示例代码中,我们首先创建了一个可变的map,然后使用Collections.unmodifiableMap()方法将其转换成了一个不可变的map。最后,我们分别使用get()和size()方法获取map中的元素和长度,并尝试进行修改操作,该操作会抛出UnsupportedOperationException异常。
需要注意的是,虽然不可变map本身不能被修改,但是如果其包含的元素是可变对象,那么这些可变对象仍然可以被修改。因此,在使用不可变map时需要注意其元素的可变性。如果需要完全保证不可变性,可以使用Java的不可变对象类,如Java 8中引入的Optional类、Java 9中引入的Immutable Collections等。