- java.lang.Object
-
- java.util.Dictionary<K,V>
-
- java.util.Hashtable<Object,Object>
-
- java.util.Properties
-
- All Implemented Interfaces:
-
Serializable
,Cloneable
,Map<Object,Object>
- 已知直接子类:
-
Provider
public class Properties extends Hashtable<Object,Object>
Properties
类表示一组持久的属性。Properties
可以保存到流中或从流中加载。 属性列表中的每个键及其对应的值都是一个字符串。属性列表可以包含另一个属性列表作为其“默认值”; 如果在原始属性列表中找不到属性键,则会搜索此第二个属性列表。
因为
Properties
从继承Hashtable
,所述put
种putAll
方法可应用于Properties
对象。 强烈不鼓励使用它们,因为它们允许调用者插入其键或值不是Strings
。 应该使用setProperty
方法。 如果在包含非String
键或值的“受损害”Properties
对象上调用store
或save
方法,则调用将失败。 类似地,如果在包含非String
密钥的“受损害”的Properties
对象上调用propertyNames
或list
方法的调用将失败。在返回的迭代器
iterator
(也就是此类的“集合视图”方法entrySet()
,keySet()
,并values()
)可能不是快速失败的(不像Hashtable的实现)。 这些迭代器被保证遍历元素,因为它们在施工时存在一次,并且可能(但不能保证)反映构造后的任何修改。load(Reader)
//
/2方法从以下指定的简单的面向行的格式将特性加载和存储到基于字符的流中。load(InputStream)
/
store(OutputStream, String)
方法与加载(读取器)/存储(Writer,String)对相同,除了输入/输出流以ISO 8859-1字符编码编码。 在该编码中不能直接表示的字符可以使用如The Java™ Language Specification第3.3节中定义的Unicode转义来编写; 在转义序列中只允许使用单个“u”字符。loadFromXML(InputStream)
和storeToXML(OutputStream, String, String)
方法以简单的XML格式加载和存储属性。 默认情况下,使用UTF-8字符编码,但是如果需要,可以指定特定编码。 需要实现支持UTF-8和UTF-16,并可能支持其他编码。 XML属性文档具有以下DOCTYPE声明:<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
请注意,导出或导入属性时不会访问系统URI(http://java.sun.com/dtd/properties.dtd); 它只是作为一个字符串来唯一地标识DTD,它是:<?xml version="1.0" encoding="UTF-8"?> <!-- DTD for properties --> <!ELEMENT properties ( comment?, entry* ) > <!ATTLIST properties version CDATA #FIXED "1.0"> <!ELEMENT comment (#PCDATA) > <!ELEMENT entry (#PCDATA) > <!ATTLIST entry key CDATA #REQUIRED>
这个类是线程安全的:多个线程可以共享一个
Properties
对象,而不需要外部同步。- 从以下版本开始:
- 1.0
- 另请参见:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field 描述 protected Properties
defaults
属性列表,其中包含此属性列表中未找到的任何键的默认值。
-
构造方法摘要
构造方法 Constructor 描述 Properties()
创建一个没有默认值的空属性列表。Properties(Properties defaults)
创建具有指定默认值的空属性列表。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 void
clear()
清除此散列表,使其不包含键。Object
clone()
创建这个散列表的浅拷贝。Object
compute(Object key, BiFunction<? super Object,? super Object,?> remappingFunction)
尝试计算指定密钥及其当前映射值的映射(如果没有当前映射,则null
)。Object
computeIfAbsent(Object key, Function<? super Object,?> mappingFunction)
如果指定的键尚未与值相关联(或映射到null
),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非是null
。Object
computeIfPresent(Object key, BiFunction<? super Object,? super Object,?> remappingFunction)
如果指定的密钥的值存在且非空,则尝试计算给定密钥及其当前映射值的新映射。boolean
contains(Object value)
测试一些键映射到这个哈希表中的指定值。boolean
containsKey(Object key)
测试指定的对象是否在此哈希表中的键。boolean
containsValue(Object value)
如果此哈希表将一个或多个键映射到此值,则返回true。Enumeration<Object>
elements()
返回此散列表中值的枚举。Set<Map.Entry<Object,Object>>
entrySet()
返回此地图中包含的映射的Set
视图。boolean
equals(Object o)
根据Map界面中的定义,将指定的对象与此Map进行比较以相等。void
forEach(BiConsumer<? super Object,? super Object> action)
对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。Object
get(Object key)
返回指定键映射到的值,如果此映射不包含键的映射,则返回null
。Object
getOrDefault(Object key, Object defaultValue)
返回指定键映射到的值,如果此映射不包含键的映射,则返回defaultValue
。String
getProperty(String key)
使用此属性列表中指定的键搜索属性。String
getProperty(String key, String defaultValue)
使用此属性列表中指定的键搜索属性。int
hashCode()
按照Map界面中的定义返回此Map的哈希码值。boolean
isEmpty()
测试这个哈希表是否将值映射到值。Enumeration<Object>
keys()
返回此散列表中键的枚举。Set<Object>
keySet()
返回此地图中包含的键的Set
视图。void
list(PrintStream out)
将此属性列表打印到指定的输出流。void
list(PrintWriter out)
将此属性列表打印到指定的输出流。void
load(InputStream inStream)
从输入字节流读取属性列表(键和元素对)。void
load(Reader reader)
以简单的线性格式从输入字符流读取属性列表(关键字和元素对)。void
loadFromXML(InputStream in)
将指定输入流中的XML文档表示的所有属性加载到此属性表中。Object
merge(Object key, Object value, BiFunction<? super Object,? super Object,?> remappingFunction)
如果指定的键尚未与值相关联或与null相关联,则将其与给定的非空值相关联。Enumeration<?>
propertyNames()
返回此属性列表中所有键的枚举,包括默认属性列表中的不同键,如果尚未从主属性列表中找到相同名称的键。Object
put(Object key, Object value)
将指定的key
映射到此散列表中指定的value
。void
putAll(Map<?,?> t)
将所有从指定地图的映射复制到此散列表。Object
putIfAbsent(Object key, Object value)
如果指定的键尚未与值相关联(或映射到null
)将其与给定值关联并返回null
,否则返回当前值。protected void
rehash()
增加这个散列表的内部重组能力,从而更有效地适应和访问其条目。Object
remove(Object key)
从此散列表中删除键(及其对应的值)。boolean
remove(Object key, Object value)
仅当指定的密钥当前映射到指定的值时删除该条目。Object
replace(Object key, Object value)
只有当目标映射到某个值时,才能替换指定键的条目。void
replaceAll(BiFunction<? super Object,? super Object,?> function)
将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都被处理或该函数抛出异常。void
save(OutputStream out, String comments)
已过时。如果在保存属性列表时发生I / O错误,此方法不会抛出IOException。 保存属性列表的首选方法是通过store(OutputStream out, String comments)
方法或storeToXML(OutputStream os, String comment)
方法。Object
setProperty(String key, String value)
调用Hashtable
方法put
。int
size()
返回此哈希表中的键数。void
store(OutputStream out, String comments)
void
store(Writer writer, String comments)
将此属性列表(键和元素对)写入此Properties
表中,以适合使用load(Reader)
方法的格式输出到输出字符流。void
storeToXML(OutputStream os, String comment)
发出表示此表中包含的所有属性的XML文档。void
storeToXML(OutputStream os, String comment, String encoding)
使用指定的编码发出表示此表中包含的所有属性的XML文档。Set<String>
stringPropertyNames()
从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串,包括默认属性列表中的不同键,如果尚未从主属性列表中找到相同名称的键。String
toString()
以一组条目的形式返回此Hashtable
对象的字符串表示形式,以大括号括起来,并以ASCII字符“,
”(逗号和空格)分隔。Collection<Object>
values()
返回此地图中包含的值的Collection
视图。
-
-
-
字段详细信息
-
defaults
protected Properties defaults
属性列表,其中包含此属性列表中未找到的任何键的默认值。
-
-
构造方法详细信息
-
Properties
public Properties()
创建一个没有默认值的空属性列表。
-
Properties
public Properties(Properties defaults)
创建具有指定默认值的空属性列表。- 参数
-
defaults
- 默认值。
-
-
方法详细信息
-
setProperty
public Object setProperty(String key, String value)
调用Hashtable
方法put
。 提供与getProperty
方法的并行性。 强制使用字符串的属性键和值。 返回的值是Hashtable
调用put
的结果。- 参数
-
key
- 要放入此属性列表的关键字。 -
value
- 对应的值为key
。 - 结果
-
该属性列表中指定键的上一个值,如果没有,
null
。 - 从以下版本开始:
- 1.2
- 另请参见:
-
getProperty(java.lang.String)
-
load
public void load(Reader reader) throws IOException
以简单的线性格式从输入字符流读取属性列表(关键字和元素对)。属性按照行进行处理。 有两种线, 自然线和逻辑线 。 自然行被定义为由一组行终止符字符(
\n
或\r
或\r\n
)或流结尾终止的一行字符。 自然线可以是空白行,注释行或保持键或键的一部分。 逻辑行保存键元素对的所有数据,其可以通过以反斜杠字符\
转义行终止符序列而跨越多个相邻自然行\
。 请注意,注释行不能以这种方式扩展; 每个自然界线都是自己的评论指标,如下所述。 从输入读取行,直到流到达结束。仅包含空白字符的自然行被视为空白,并被忽略。 注释行具有ASCII
'#'
或'!'
作为其第一个非空白字符; 注释行也被忽略,不对key-element信息进行编码。 除了线终止子,此格式考虑字符空间(' '
,'\u0020'
),标签('\t'
,'\u0009'
),和形式进料('\f'
,'\u000C'
)是白色的空间。如果逻辑行分布在几条自然行中,则反斜杠将转义行终止符序列,行终止符序列以及以下行开始处的任何空格对键或元素值都没有影响。 关键和元素解析的剩余部分(加载时)将假设所有构成键和元素的字符在行连续字符被删除后出现在单个自然行上。 请注意,这是不够的,只检查字符行终止序列之前,以决定是否行结束逃脱; 必须有奇数数量的连续反斜线才能转义线终止符。 由于输入是从左到右处理的,所以在线程终止符(或其他地方)之前,非零偶数的2 n个连续的反斜杠在转义处理后编码n个反斜杠。
关键包含了所有的从第一个非空格字符以及高达行的字符,但不包括第一个转义
'='
,':'
,或大于行结束符等空白字符。 所有这些密钥终止字符可以通过用前面的反斜杠字符进行转义而包含在密钥中; 例如,\:\=
将是双字符键
":="
。 可以使用\r
和\n
转义序列来包括行终止符。 钥匙之后任何空格被跳过; 如果键后的第一个非空白字符为'='
或':'
,则会被忽略,并且其后面的任何空白字符也将被跳过。 线上的所有剩余字符都成为相关元素字符串的一部分; 如果没有剩余的字符,则该元素为空字符串""
。 一旦构成密钥和元素的原始字符序列被识别,则如上所述执行逃逸处理。作为示例,以下三行中的每一行指定密钥
"Truth"
和相关联的元素值"Beauty"
:Truth = Beauty Truth:Beauty Truth :Beauty
作为另一个例子,以下三行指定单个属性:fruits apple, banana, pear, \ * cantaloupe, watermelon, \ * kiwi, mango
关键是"fruits"
,相关元素是:"apple, banana, pear, cantaloupe, watermelon, kiwi, mango"
请注意,在每个\
之前会出现一个空格,以便在最终结果中的每个逗号后面会出现一个空格;\
线上的\
线路终结器和前导空格仅被丢弃, 不被一个或多个其他字符替代。作为第三个例子,行:
cheeses
指定键为"cheeses"
,相关元素为空字符串""
。键和元素中的字符可以用类似于用于字符和字符串文字的转义序列来表示(参见The Java™ Language Specification的3.3和3.10.6 )。 与用于字符和字符串的字符转义序列和Unicode转义的区别是:
- 八进制转义不被识别。
- 字符序列
\b
不表示退格字符。 - 该方法在将非有效的转义字符作为错误之前不处理反斜杠字符
\
; 反斜杠默默地掉下来。 例如,在Java字符串中,序列"\z"
将导致编译时错误。 相比之下,此方法会静默地丢弃反斜杠。 因此,该方法将两个字符序列"\b"
视为等同于单个字符'b'
。 - 单引号和双引号不需要转义; 然而,通过上面的规则,单引号和双引号字符之前的反斜杠仍然分别产生单引号和双引号字符。
- 在Unicode转义序列中只允许使用单个'u'字符。
此方法返回后指定的流保持打开状态。
- 参数
-
reader
- 输入字符流。 - 异常
-
IOException
- 从输入流读取时是否发生错误。 -
IllegalArgumentException
- 输入中是否出现格式错误的Unicode转义。 -
NullPointerException
- 如果reader
为空。 - 从以下版本开始:
- 1.6
-
load
public void load(InputStream inStream) throws IOException
从输入字节流读取属性列表(键和元素对)。 输入流采用load(Reader)
中规定的简单的面向行的格式,假定使用ISO 8859-1字符编码; 每个字节是一个拉丁字符。 不在Latin1中的字符以及某些特殊字符在按照The Java™ Language Specification第3.3节中定义的Unicode转义的键和元素中进行表示。此方法返回后指定的流保持打开状态。
- 参数
-
inStream
- 输入流。 - 异常
-
IOException
- 从输入流读取时是否发生错误。 -
IllegalArgumentException
- 如果输入流包含格式不正确的Unicode转义序列。 -
NullPointerException
- 如果inStream
为空。 - 从以下版本开始:
- 1.2
-
save
@Deprecated public void save(OutputStream out, String comments)
已过时。 如果在保存属性列表时发生I / O错误,此方法不会抛出IOException。 保存属性列表的首选方法是通过store(OutputStream out, String comments)
方法或storeToXML(OutputStream os, String comment)
方法。调用store(OutputStream out, String comments)
方法并禁止抛出的IOExceptions。- 参数
-
out
- 输出流。 -
comments
- 属性列表的描述。 - 异常
-
ClassCastException
- 如果此Properties
对象包含任何不是Strings
键或值。
-
store
public void store(Writer writer, String comments) throws IOException
将此属性列表(键和元素对)写入此Properties
表格中,以适合使用load(Reader)
方法的格式将输出字符流写入 。此
Properties
表(如果有)的默认表中的属性不会被此方法写出。如果comments参数不为空,则首先将ASCII
#
字符,注释字符串和行分隔符写入输出流。 因此,comments
可以作为识别评论。 换行符('\ n'),回车符('\ r')或立即在注释中的换行符后面的回车替换为由Writer
生成的行分隔符,如果下一个字符在注释中不是字符#
或字符!
然后在该行分隔符之后写出ASCII#
。接下来,注释行总是写入,由ASCII
#
字符组成,当前日期和时间(如当前时间Date
的toString
方法生成的)和由Writer
生成的行分隔符。然后,这个
Properties
表中的每个条目都将被写出,每行一个。 对于每个条目,键字符串被写入,然后是一个ASCII=
,然后是关联的元素字符串。 对于密钥,所有空格字符都用前面的\
字符写入。 对于元素,前导空格字符,但不是嵌入或尾随空格字符,写入前面的\
字符。 键和元素字符#
,!
,=
,和:
写入加上正斜杠,以确保它们被正确装载。在写入条目之后,输出流被刷新。 此方法返回后,输出流保持打开状态。
- 参数
-
writer
- 输出字符流写入器。 -
comments
- 属性列表的描述。 - 异常
-
IOException
- 如果将此属性列表写入指定的输出流,IOException
抛出一个IOException
。 -
ClassCastException
- 如果此Properties
对象包含任何不是Strings
键或值。 -
NullPointerException
- 如果writer
为空。 - 从以下版本开始:
- 1.6
-
store
public void store(OutputStream out, String comments) throws IOException
将此属性列表(键和元素对)写入此Properties
表中,以适合使用load(InputStream)
方法加载到Properties
表格的格式输出流。此
Properties
表(如果有)的默认表中的属性未通过此方法写出。此方法输出与
store(Writer)
中规定的相同格式的注释,属性键和值,具有以下区别:- 流使用ISO 8859-1字符编码编写。
- 注释中不在拉丁文1中的字符为
\u
xxxx,用于其相应的unicode十六进制值xxxx 。 - 字符小于
\u0020
和大于字符\u007E
在属性键或值被写为\u
XXXX为适当的十六进制值XXXX。
在写入条目之后,输出流被刷新。 此方法返回后,输出流保持打开状态。
- 参数
-
out
- 输出流。 -
comments
- 属性列表的描述。 - 异常
-
IOException
- 如果将此属性列表写入指定的输出流,IOException
抛出一个IOException
。 -
ClassCastException
- 如果此Properties
对象包含任何不是Strings
键或值。 -
NullPointerException
- 如果out
为空。 - 从以下版本开始:
- 1.2
-
loadFromXML
public void loadFromXML(InputStream in) throws IOException, InvalidPropertiesFormatException
将指定输入流中的XML文档表示的所有属性加载到此属性表中。XML文档必须具有以下DOCTYPE声明:
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
此外,文件必须满足上述性质DTD。需要一个实现来读取使用“
UTF-8
”或“UTF-16
”编码的XML文档。 实现可以支持额外的编码。指定的流在此方法返回后关闭。
- 参数
-
in
- 从中读取XML文档的输入流。 - 异常
-
IOException
- 如果从指定的输入流读取导致一个IOException
。 -
UnsupportedEncodingException
- 如果文档的编码声明可以被读取,并且指定不支持的编码 -
InvalidPropertiesFormatException
- 输入流上的数据不构成具有强制文档类型的有效XML文档。 -
NullPointerException
- 如果in
为空。 - 从以下版本开始:
- 1.5
- 另请参见:
-
storeToXML(OutputStream, String, String)
, Character Encoding in Entities
-
storeToXML
public void storeToXML(OutputStream os, String comment) throws IOException
发出表示此表中包含的所有属性的XML文档。这种
props.storeToXML(os, comment)
形式的方法的调用与调用props.storeToXML(os, comment, "UTF-8");
。- 参数
-
os
- 发送XML文档的输出流。 -
comment
- 属性列表的描述,如果没有评论,null
。 - 异常
-
IOException
- 如果写入指定的输出流导致一个IOException
。 -
NullPointerException
- 如果os
为空。 -
ClassCastException
- 如果此Properties
对象包含任何不是Strings
键或值。 - 从以下版本开始:
- 1.5
- 另请参见:
-
loadFromXML(InputStream)
-
storeToXML
public void storeToXML(OutputStream os, String comment, String encoding) throws IOException
使用指定的编码发出表示此表中包含的所有属性的XML文档。XML文档将具有以下DOCTYPE声明:
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
如果指定的注释是
null
则文档中不会存储注释。需要一个实现来支持使用“
UTF-8
”或“UTF-16
”编码的XML文档的编写。 实现可以支持额外的编码。此方法返回后指定的流保持打开状态。
- 参数
-
os
- 发送XML文档的输出流。 -
comment
- 属性列表的描述,或null
如果不需要注释)。 -
encoding
- 支持的名称 character encoding - 异常
-
IOException
- 如果写入指定的输出流导致一个IOException
。 -
UnsupportedEncodingException
- 如果实现不支持编码。 -
NullPointerException
- 如果os
是null
,或者如果encoding
是null
。 -
ClassCastException
- 如果此Properties
对象包含任何不是Strings
键或值。 - 从以下版本开始:
- 1.5
- 另请参见:
-
loadFromXML(InputStream)
, Character Encoding in Entities
-
getProperty
public String getProperty(String key)
使用此属性列表中指定的键搜索属性。 如果在此属性列表中找不到该键,则会默认属性列表及其默认值递归。 如果找不到属性,该方法返回null
。- 参数
-
key
- 属性键。 - 结果
- 该属性列表中具有指定键值的值。
- 另请参见:
-
setProperty(java.lang.String, java.lang.String)
,defaults
-
getProperty
public String getProperty(String key, String defaultValue)
使用此属性列表中指定的键搜索属性。 如果在此属性列表中找不到该键,则会默认属性列表及其默认值递归。 如果找不到属性,该方法返回默认值参数。- 参数
-
key
- 哈希表键。 -
defaultValue
- 默认值。 - 结果
- 该属性列表中具有指定键值的值。
- 另请参见:
-
setProperty(java.lang.String, java.lang.String)
,defaults
-
propertyNames
public Enumeration<?> propertyNames()
返回此属性列表中所有键的枚举,包括默认属性列表中的不同键,如果尚未从主属性列表中找到相同名称的键。- 结果
- 枚举此属性列表中的所有键,包括默认属性列表中的键。
- 异常
-
ClassCastException
- 如果此属性列表中的任何键不是字符串。 - 另请参见:
-
Enumeration
,defaults
,stringPropertyNames()
-
stringPropertyNames
public Set<String> stringPropertyNames()
从该属性列表中返回一个不可修改的键集,其中键及其对应的值是字符串,包括默认属性列表中的不同键,如果尚未从主属性列表中找到相同名称的键。 其关键字或值不是String
类型的String
被省略。返回的集合不受此
Properties
对象的支持。 对此Properties
对象的更改不会反映在返回的集合中。- 结果
- 该属性列表中的一个不可修改的键集,其中键及其对应的值是字符串,包括默认属性列表中的键。
- 从以下版本开始:
- 1.6
- 另请参见:
-
defaults
-
list
public void list(PrintStream out)
将此属性列表打印到指定的输出流。 此方法对调试非常有用。- 参数
-
out
- 输出流。 - 异常
-
ClassCastException
- 如果此属性列表中的任何键不是字符串。
-
list
public void list(PrintWriter out)
将此属性列表打印到指定的输出流。 此方法对调试非常有用。- 参数
-
out
- 输出流。 - 异常
-
ClassCastException
- 如果此属性列表中的任何键不是字符串。 - 从以下版本开始:
- 1.1
-
size
public int size()
描述从类别复制:Hashtable
返回此哈希表中的键数。
-
isEmpty
public boolean isEmpty()
描述从类复制:Hashtable
测试这个哈希表是否将值映射到值。
-
keys
public Enumeration<Object> keys()
描述从类复制:Hashtable
返回此散列表中键的枚举。 对返回的对象使用枚举方法按顺序获取键。 如果哈希表在结构上被修改,同时枚举了键,则枚举的结果是未定义的。- 重写:
-
keys
在Hashtable<Object,Object>
- 结果
- 这个哈希表中的键的枚举。
- 另请参见:
-
Enumeration
,Hashtable.elements()
,Hashtable.keySet()
,Map
-
elements
public Enumeration<Object> elements()
描述从类复制:Hashtable
返回此散列表中值的枚举。 对返回的对象使用枚举方法来顺序获取元素。 如果哈希表在结构上被修改,同时枚举了值,则枚举的结果是未定义的。- 重写:
-
elements
在Hashtable<Object,Object>
- 结果
- 列出这个散列表中的值。
- 另请参见:
-
Enumeration
,Hashtable.keys()
,Hashtable.values()
,Map
-
containsValue
public boolean containsValue(Object value)
描述从类复制:Hashtable
- Specified by:
-
containsValue
在接口Map<Object,Object>
- 重写:
-
containsValue
在Hashtable<Object,Object>
- 参数
-
value
- 要在此散列表中存在的值要进行测试 - 结果
-
true
如果该地图将一个或多个键映射到指定的值
-
containsKey
public boolean containsKey(Object key)
描述从类复制:Hashtable
测试指定的对象是否在此哈希表中的键。- Specified by:
-
containsKey
在接口Map<Object,Object>
- 重写:
-
containsKey
在Hashtable<Object,Object>
- 参数
-
key
- 可能的键 - 结果
-
true
当且仅当指定的对象是此散列表中的键时,由equals
方法确定;false
否则。 - 另请参见:
-
Hashtable.contains(Object)
-
get
public Object get(Object key)
描述从类复制:Hashtable
返回指定键映射到的值,如果此映射不包含键的映射,则返回null
。更正式地,如果该映射包含从
k
键到值v
的映射,使得(key.equals(k))
,则该方法返回v
; 否则返回null
。 (最多可以有一个这样的映射。)
-
put
public Object put(Object key, Object value)
描述从类复制:Hashtable
将指定的key
映射到此散列表中指定的value
。 钥匙和价值都不能是null
。可以通过使用等于原始密钥的密钥调用
get
方法来检索该值。- Specified by:
-
put
在接口Map<Object,Object>
- 重写:
-
put
在Hashtable<Object,Object>
- 参数
-
key
- 哈希表键 -
value
- 值 - 结果
-
该哈希表中指定键的上一个值,如果没有,
null
- 另请参见:
-
Object.equals(Object)
,Hashtable.get(Object)
-
putAll
public void putAll(Map<?,?> t)
说明从类别Hashtable
复制将所有从指定地图的映射复制到此散列表。 这些映射将替换这个散列表对于指定地图中当前的任何键的任何映射。
-
clear
public void clear()
描述从类复制:Hashtable
清除此散列表,使其不包含键。
-
toString
public String toString()
描述从类复制:Hashtable
以一组条目的形式返回此Hashtable
对象的字符串表示形式,其括在大括号中,并以ASCII字符“,
”(逗号和空格)分隔。 每个条目都显示为关键字,等号为=
,以及相关联的元素,其中使用toString
方法将键和元素转换为字符串。
-
keySet
public Set<Object> keySet()
描述从类复制:Hashtable
返回此地图中包含的键的Set
视图。 该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在集合中的迭代正在进行中修改映射(除了通过迭代器自己的remove
操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.remove
,Set.remove
,removeAll
,retainAll
,和clear
操作。 它不支持add
或addAll
操作。
-
values
public Collection<Object> values()
描述从类复制:Hashtable
返回此地图中包含的值的Collection
视图。 集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在集合中的迭代正在进行中修改映射(除了通过迭代器自己的remove
操作),迭代的结果是未定义的。 该collection支持元素移除,即从映射中相应的映射,经由Iterator.remove
,Collection.remove
,removeAll
,retainAll
和clear
操作。 它不支持add
或addAll
操作。
-
entrySet
public Set<Map.Entry<Object,Object>> entrySet()
描述从类复制:Hashtable
返回此地图中包含的映射的Set
视图。 该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在集合中的迭代正在进行中修改映射(除了通过迭代器自己的remove
操作,或者通过迭代器返回的映射条目上的setValue
操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.remove
,Set.remove
,removeAll
,retainAll
和clear
操作。 它不支持add
或addAll
操作。
-
hashCode
public int hashCode()
描述从类复制:Hashtable
按照Map界面中的定义返回此Map的哈希码值。
-
getOrDefault
public Object getOrDefault(Object key, Object defaultValue)
说明从接口Map
复制返回指定键映射到的值,如果此映射不包含该键的映射,则返回defaultValue
。- Specified by:
-
getOrDefault
在接口Map<Object,Object>
- 重写:
-
getOrDefault
在Hashtable<Object,Object>
- 参数
-
key
- 要返回其关联值的键 -
defaultValue
- 键的默认映射 - 结果
-
映射指定键的值,如果此映射不包含键的映射,
defaultValue
-
forEach
public void forEach(BiConsumer<? super Object,? super Object> action)
说明从接口Map
复制对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。 除非实现类另有指定,否则按照进入设置迭代的顺序执行操作(如果指定了迭代顺序)。操作引发的异常被转发给调用者。
-
replaceAll
public void replaceAll(BiFunction<? super Object,? super Object,?> function)
说明从界面Map
复制将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都被处理或该函数抛出异常。 函数抛出的异常被转发给调用方。- Specified by:
-
replaceAll
在接口Map<Object,Object>
- 重写:
-
replaceAll
在Hashtable<Object,Object>
- 参数
-
function
- 应用于每个条目的功能
-
putIfAbsent
public Object putIfAbsent(Object key, Object value)
说明从界面Map
复制如果指定的键尚未与值(或映射到null
)相关联,并将其与给定值相关联并返回null
,否则返回当前值。- Specified by:
-
putIfAbsent
在接口Map<Object,Object>
- 重写:
-
putIfAbsent
在Hashtable<Object,Object>
- 参数
-
key
- 指定值与之关联的键 -
value
- 与指定键相关联的值 - 结果
-
与指定键相关联的上一个值,如果没有键的映射,
null
。 (Anull
返回也可以指示映射先前关联的是null
的密钥,如果实现支持空值)。
-
computeIfAbsent
public Object computeIfAbsent(Object key, Function<? super Object,?> mappingFunction)
描述从类别复制:Hashtable
如果指定的键尚未与值相关联(或映射到null
),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非是null
。如果映射函数返回
null
,则不记录映射。 如果映射函数本身引发(未检查)异常,则重新抛出异常,并且不记录映射。 最常见的用法是构造一个用作初始映射值或记忆结果的新对象,如:map.computeIfAbsent(key, k -> new Value(f(k)));
或者实现一个多值映射
Map<K,Collection<V>>
,每个键支持多个值:map.computeIfAbsent(key, k -> new HashSet<V>()).add(v);
映射函数在计算过程中不应该修改该映射。
如果映射函数在计算过程中修改了该映射,则该方法将尽力而为地抛出
ConcurrentModificationException
。- Specified by:
-
computeIfAbsent
在接口Map<Object,Object>
- 重写:
-
computeIfAbsent
在Hashtable<Object,Object>
- 参数
-
key
- 要与其关联的指定值的键 -
mappingFunction
- 计算值的映射函数 - 结果
- 与指定键相关联的当前(现有或计算)值,如果计算值为空,则为null
-
computeIfPresent
public Object computeIfPresent(Object key, BiFunction<? super Object,? super Object,?> remappingFunction)
描述从类复制:Hashtable
如果指定的密钥的值存在且非空,则尝试计算给定密钥及其当前映射值的新映射。如果重映射函数返回
null
,则映射将被删除。 如果重映射函数本身引发(未检查)异常,则重新引导异常,并且当前映射保持不变。重映射功能在计算过程中不应修改此映射。
如果重新映射功能在计算过程中修改了该映射,这个方法将尽力而为地抛出一个
ConcurrentModificationException
。- Specified by:
-
computeIfPresent
在接口Map<Object,Object>
- 重写:
-
computeIfPresent
在Hashtable<Object,Object>
- 参数
-
key
- 要与其关联的指定值的键 -
remappingFunction
- 计算值的重映射函数 - 结果
- 与指定键相关的新值,如果没有则为null
-
compute
public Object compute(Object key, BiFunction<? super Object,? super Object,?> remappingFunction)
描述从类复制:Hashtable
尝试计算指定键的映射及其当前映射的值(如果没有当前映射,null
)。 例如,要为值映射创建或附加String
msg:map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))
merge()
通常更容易用于此类目的。)如果重映射函数返回
null
,则映射将被删除(如果最初不存在则保持不存在)。 如果重映射函数本身引发(未检查)异常,则重新引导异常,并且当前映射保持不变。重映射功能在计算过程中不应修改此映射。
如果重映射功能在计算过程中修改了该映射,这个方法将尽力而为地抛出一个
ConcurrentModificationException
。
-
merge
public Object merge(Object key, Object value, BiFunction<? super Object,? super Object,?> remappingFunction)
描述从类复制:Hashtable
如果指定的键尚未与值相关联或与null相关联,则将其与给定的非空值相关联。 否则,将关联值替换为给定重映射函数的结果,如果结果为null
,则将其null
。 当组合键的多个映射值时,该方法可能是有用的。 例如,要创建或追加String msg
到值映射:map.merge(key, msg, String::concat)
如果重映射函数返回
null
,则映射将被删除。 如果重映射函数本身引发(未检查)异常,则重新引导异常,并且当前映射保持不变。重映射功能在计算过程中不应修改此映射。
如果重映射功能在计算过程中修改了该映射,则该方法将尽力而为地抛出
ConcurrentModificationException
。
-
rehash
protected void rehash()
描述从类别复制:Hashtable
增加这个散列表的内部重组能力,从而更有效地适应和访问其条目。 当哈希表中的键数超过此散列表的容量和载入系数时,将自动调用此方法。
-
-