Map
<String
, List
<String
>>。键是不区分大小写的字符串,表示头部名称,与每个键关联的值是一个 List
<String
>,每个请求或响应中的头部名称的出现都有一个元素。
例如,如果一个响应头实例包含一个键"HeaderName",具有两个值"value1和value2",那么此对象将输出为两个头部行:
提供了所有常规HeaderName: value1 HeaderName: value2
Map
方法,但以下额外的便利方法最有可能被使用:
getFirst(String)
返回单值头部或多值头部的第一个值。add(String,String)
将给定的头部值添加到给定键的列表中。set(String,String)
将给定的头部字段设置为单个值,覆盖值列表中的任何现有值。
Headers
的实例可以是 可变的 或 不可变的。一个 可变的头部 允许添加、删除或修改头部名称和值,例如由 HttpExchange.getResponseHeaders()
返回的实例。一个 不可变的头部 不允许对头部名称或值进行任何修改,例如由 HttpExchange.getRequestHeaders()
返回的实例。对于不可变头部实例的修改器方法将无条件地抛出 UnsupportedOperationException
。
此类中的所有方法都拒绝键和值为 null
的情况。在 HTTP 请求或响应头中永远不会出现键为 null
的情况。
- 自版本:
- 1.6
-
Nested Class Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
将给定的value
添加到给定key
的头部列表中。void
clear()
从此映射中删除所有映射(可选操作)。boolean
containsKey
(Object key) 如果此映射包含指定键的映射,则返回true
。boolean
containsValue
(Object value) 如果此映射将一个或多个键映射到指定值,则返回true
。entrySet()
返回此映射中包含的映射的Set
视图。boolean
指示某个其他对象是否与此对象“相等”。返回指定键映射到的值,如果此映射不包含键的映射,则返回null
。int
hashCode()
返回对象的哈希码值。boolean
isEmpty()
如果此映射不包含键-值映射,则返回true
。keySet()
返回此映射中包含的键的Set
视图。static Headers
使用给定的名称值对作为其头部集合返回一个不可变的Headers
。static Headers
从给定的headers
创建一个不可变的Headers
,具有相同的头部名称和值。在此映射中将指定的值与指定的键关联(可选操作)。void
将指定映射中的所有映射复制到此映射中(可选操作)。如果存在,则从此映射中移除键的映射(可选操作)。void
将给定的value
设置为给定key
的唯一头部值。int
size()
返回此映射中键-值映射的数量。values()
返回此映射中包含的值的Collection
视图。Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Constructor Details
-
Headers
public Headers()创建一个空的Headers
实例。 -
Headers
从给定的headers
创建一个可变的Headers
,具有相同的头部名称和值。- 参数:
-
headers
- 头部名称和值的映射 - 抛出:
-
NullPointerException
- 如果headers
或其任何名称或值为 null,或者任何值包含 null。 - 自版本:
- 18
-
-
Method Details
-
size
public int size()从接口复制的描述:Map
返回此映射中键-值映射的数量。如果映射包含的元素超过Integer.MAX_VALUE
,则返回Integer.MAX_VALUE
。 -
isEmpty
public boolean isEmpty()从接口复制的描述:Map
返回true
如果此映射不包含键-值映射。 -
containsKey
从接口复制的描述:Map
返回true
如果此映射包含指定键的映射。更正式地说,如果此映射包含一个键k
的映射,使得Objects.equals(key, k)
,则返回true
。(最多只能有一个这样的映射。)- 指定:
-
containsKey
在接口Map<String,
中List<String>> - 参数:
-
key
- 要测试其在此映射中是否存在的键 - 返回:
-
如果此映射包含指定键的映射,则返回
true
-
containsValue
从接口复制的描述:Map
返回true
如果此映射将一个或多个键映射到指定值。更正式地说,如果此映射包含至少一个映射到值v
的映射,使得Objects.equals(value, v)
,则返回true
。对于大多数Map
接口的实现,此操作可能需要与映射大小成线性关系的时间。- 指定:
-
containsValue
在接口Map<String,
中List<String>> - 参数:
-
value
- 要测试其在此映射中是否存在的值 - 返回:
-
如果此映射将一个或多个键映射到指定值,则返回
true
-
get
从接口复制的描述:Map
返回指定键映射的值,如果此映射不包含键的映射,则返回null
。更正式地说,如果此映射包含从键
k
到值v
的映射,使得Objects.equals(key, k)
,则此方法返回v
;否则返回null
。(最多只能有一个这样的映射。)如果此映射允许空值,则返回
null
并不一定表示映射不包含键的映射;也有可能映射将键明确映射到null
。可以使用containsKey
操作来区分这两种情况。 -
getFirst
返回给定key
的String
值的List
的第一个值,如果key
不存在映射,则返回null
。- 参数:
-
key
- 要搜索的键 - 返回:
-
与键关联的第一个
String
值,如果key
不存在映射,则返回null
-
put
从接口复制的描述:Map
在此映射中将指定的值与指定的键关联(可选操作)。如果映射先前包含键的映射,则旧值将被指定的值替换。(如果映射m
包含键k
的映射,当且仅当m.containsKey(k)
将返回true
时,才说映射包含键k
的映射。) -
add
将给定的value
添加到给定key
的标题列表中。如果映射尚不存在,则将创建它。- 参数:
-
key
- 标题名称 -
value
- 要添加到标题的值
-
set
将给定的value
设置为给定key
的唯一标题值。如果映射尚不存在,则将创建它。- 参数:
-
key
- 标题名称 -
value
- 要设置的标题值
-
remove
从接口复制的描述:Map
如果存在,则从此映射中删除键的映射(可选操作)。更正式地说,如果此映射包含从键k
到值v
的映射,使得Objects.equals(key, k)
,则将删除该映射。(映射最多只能包含一个这样的映射。)返回此映射先前关联的键的值,如果映射不包含键的映射,则返回
null
。如果此映射允许空值,则返回
null
并不一定表示映射不包含键的映射;也有可能映射明确将键映射到null
。一旦调用返回,映射将不包含指定的键的映射。
-
putAll
从接口复制的描述:Map
-
clear
public void clear()从接口复制的描述:Map
从此映射中删除所有映射(可选操作)。此调用返回后,映射将为空。 -
keySet
从接口复制的描述:Map
返回此映射中包含的键的Set
视图。该集合由映射支持,因此对映射的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(除非通过迭代器自己的remove
操作),则迭代的结果是未定义的。该集合支持元素删除,通过Iterator.remove
、Set.remove
、removeAll
、retainAll
和clear
操作从映射中删除相应的映射。它不支持add
或addAll
操作。 -
values
从接口复制的描述:Map
返回此映射中包含的值的Collection
视图。该集合由映射支持,因此对映射的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(除非通过迭代器自己的remove
操作),则迭代的结果是未定义的。该集合支持元素删除,通过Iterator.remove
、Collection.remove
、removeAll
、retainAll
和clear
操作从映射中删除相应的映射。它不支持add
或addAll
操作。 -
entrySet
从接口中复制的描述:Map
返回此映射中包含的映射的Set
视图。该集合由映射支持,因此对映射的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(除非通过迭代器自身的remove
操作或通过迭代器返回的映射条目的setValue
操作),则迭代的结果是未定义的。该集合支持元素移除,通过Iterator.remove
、Set.remove
、removeAll
、retainAll
和clear
操作从映射中移除相应的映射。它不支持add
或addAll
操作。 -
equals
从类中复制的描述:Object
指示某个其他对象是否与此对象“相等”。equals
方法在非空对象引用上实现等价关系:- 它是自反的:对于任何非空引用值
x
,x.equals(x)
应返回true
。 - 它是对称的:对于任何非空引用值
x
和y
,如果x.equals(y)
应返回true
,则只有当y.equals(x)
返回true
时x.equals(y)
才应返回true
。 - 它是传递的:对于任何非空引用值
x
,y
和z
,如果x.equals(y)
返回true
且y.equals(z)
返回true
,则x.equals(z)
应返回true
。 - 它是一致的:对于任何非空引用值
x
和y
,多次调用x.equals(y)
应一致地返回true
或一致地返回,前提是在对象上用于 equals
比较的信息未被修改。 - 对于任何非空引用值
x
,x.equals(null)
应返回。
等价类;等价类的所有成员彼此相等。等价类的成员可互换,至少对于某些目的而言。
- 它是自反的:对于任何非空引用值
-
hashCode
public int hashCode()从类中复制的描述:Object
为对象返回一个哈希码值。此方法支持哈希表(例如由HashMap
提供的哈希表)的好处。hashCode
的一般合同是:- 在Java应用程序的执行期间,如果在同一对象上多次调用
hashCode
方法,则只要在对象上用于equals
比较的信息未被修改,hashCode
方法必须一致地返回相同的整数。这个整数不需要在应用程序的一个执行到另一个执行之间保持一致。 - 如果两个对象根据
equals
方法相等,则在两个对象的每个对象上调用hashCode
方法必须产生相同的整数结果。 - 如果根据
equals
方法两个对象不相等,则不需要调用hashCode
方法在两个对象的每个对象上产生不同的整数结果。但是,程序员应该注意,对于不相等的对象产生不同的整数结果可能会提高哈希表的性能。
- 在Java应用程序的执行期间,如果在同一对象上多次调用
-
of
使用给定的名称值对作为其头信息集的不可变Headers
返回。String
实例必须交替作为头信息名称和头信息值。要向同一名称添加多个值,必须对每个新值提供相同的名称。如果提供的headers
为空,则返回一个空的Headers
。- 参数:
-
headers
- 名称值对的列表 - 返回:
- 具有给定名称值对的不可变头信息
- 抛出:
-
NullPointerException
- 如果headers
或其任何元素为null。 -
IllegalArgumentException
- 如果提供的字符串数量为奇数。 - 自:
- 18
-
of
使用给定的headers
从中返回具有相同头信息名称和值的不可变Headers
。- 参数:
-
headers
- 头信息名称和值的映射 - 返回:
- 一个不可变的头信息
- 抛出:
-
NullPointerException
- 如果headers
或其任何名称或值为null,或者任何值包含null。 - 自:
- 18
-