Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图从一个非常简单的映射中获取不可变的集合视图(浅拷贝就足够了)_Java_Collections_Set_Immutability - Fatal编程技术网

Java 试图从一个非常简单的映射中获取不可变的集合视图(浅拷贝就足够了)

Java 试图从一个非常简单的映射中获取不可变的集合视图(浅拷贝就足够了),java,collections,set,immutability,Java,Collections,Set,Immutability,我有一个HashMap[CustomEnumeration,String]作为我的类的成员 但是如果我给它一个getter,外部对象将能够修改它(添加新的条目/值对或删除其中的一些条目/值对)。我不想那样 所以我看了一下Map的entrySet()方法,但是他们说来自两个对象之一(返回集和原始Map)的修改都在另一边 那么,处理这个问题的最佳方法是什么?有没有办法从我的地图中获取不可变的集合/地图 我已经看过了,但我确信我不需要这么复杂,因为我只使用了一个“几乎原始类型”和一个原始类型。 那么,

我有一个HashMap[CustomEnumeration,String]作为我的类的成员

但是如果我给它一个getter,外部对象将能够修改它(添加新的条目/值对或删除其中的一些条目/值对)。我不想那样

所以我看了一下Map的entrySet()方法,但是他们说来自两个对象之一(返回集和原始Map)的修改都在另一边

那么,处理这个问题的最佳方法是什么?有没有办法从我的地图中获取不可变的集合/地图

我已经看过了,但我确信我不需要这么复杂,因为我只使用了一个“几乎原始类型”和一个原始类型。 那么,在我的情况下,什么是最好的解决方案?

你的意思是

public Map<K, V> getMap() {
    return Collections.unmodifiableMap(map);
}
publicmap getMap(){
返回集合。不可修改映射(map);
}
这将为您的映射返回一个不可修改的包装器。注意:地图中的对象仍然可以修改。

你的意思是

public Map<K, V> getMap() {
    return Collections.unmodifiableMap(map);
}
publicmap getMap(){
返回集合。不可修改映射(map);
}
这将为您的映射返回一个不可修改的包装器。注意:地图中的对象仍然可以修改。

你的意思是

public Map<K, V> getMap() {
    return Collections.unmodifiableMap(map);
}
publicmap getMap(){
返回集合。不可修改映射(map);
}
这将为您的映射返回一个不可修改的包装器。注意:地图中的对象仍然可以修改。

你的意思是

public Map<K, V> getMap() {
    return Collections.unmodifiableMap(map);
}
publicmap getMap(){
返回集合。不可修改映射(map);
}
这将为您的映射返回一个不可修改的包装器。注意:地图中的对象仍然可以修改。

请参见

public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K, ? extends V> m) {
return new UnmodifiableMap<K,V>(m);
}
公共静态地图不可修改地图(地图参见

公共静态地图不可修改地图(地图参见

公共静态地图不可修改地图(地图参见



public static Map unmodifiableMap(Mapyes shall:)你是对的是浅的:)你是对的是浅的:)你是对的,你的意思是我不能添加/删除两个条目/值,但是可以修改已经存在的对象吗?如果是这样,那也没关系:)我所需要的只是不再添加两个关联,也不再删除任何关联:)@LaurentBERNABE无法添加、替换任何内容,即直接或通过使用keySet()、entrySet()值()或迭代器()来添加、替换或删除任何内容。注意:如果您更改了基础映射,那么这些更改是可见的。我希望官方Java文档能够使这些点更可见。。。集合是如此关键和重要,你的意思是我不能添加/删除两个条目/值,但可以修改已经存在的对象吗?如果是这样,那也没关系:)我所需要的只是不再添加两个关联,也不再删除任何关联:)@LaurentBERNABE无法添加、替换任何内容,即直接或通过使用keySet()、entrySet()值()或迭代器()来添加、替换或删除任何内容。注意:如果您更改了基础映射,那么这些更改是可见的。我希望官方Java文档能够使这些点更可见。。。集合是如此关键和重要,你的意思是我不能添加/删除两个条目/值,但可以修改已经存在的对象吗?如果是这样,那也没关系:)我所需要的只是不再添加两个关联,也不再删除任何关联:)@LaurentBERNABE无法添加、替换任何内容,即直接或通过使用keySet()、entrySet()值()或迭代器()来添加、替换或删除任何内容。注意:如果您更改了基础映射,那么这些更改是可见的。我希望官方Java文档能够使这些点更可见。。。集合是如此关键和重要,你的意思是我不能添加/删除两个条目/值,但可以修改已经存在的对象吗?如果是这样,那也没关系:)我所需要的只是不再添加两个关联,也不再删除任何关联:)@LaurentBERNABE无法添加、替换任何内容,即直接或通过使用keySet()、entrySet()值()或迭代器()来添加、替换或删除任何内容。注意:如果您更改了基础映射,那么这些更改是可见的。我希望官方Java文档能够使这些点更可见。。。收藏是如此的关键和重要谢谢你们,一旦我阅读了优秀的Bruce Eckel教程,他指出了这个解决方案。。。但是我忘了:(.无论如何,谢谢。还有,什么可以修改:所有值?所有键?或者什么都不可以?你不能修改这个集合。所以什么都不可以没有键没有值。谢谢你,有一次我读了优秀的Bruce Eckel教程,他指出了这个解决方案…但是我忘了:(.无论如何,谢谢。还有,什么可以修改:所有值?所有键?或者什么都不可以?你不能修改这个集合。所以什么都不可以没有键没有值。谢谢你,有一次我读了优秀的Bruce Eckel教程,他指了指这个解决方案……但我忘了:(.无论如何,谢谢。还有,什么可以修改:所有值?所有键?或者什么都不可以?你不能修改这个集合。所以什么都不可以没有键没有值。谢谢你,有一次我读了优秀的Bruce Eckel教程,他指了指这个解决方案……但我忘了:(.无论如何,谢谢。另外,可以修改的内容:所有值?所有键?或者什么都不可以?您无法修改此集合。因此,什么都不可以。没有键没有值。