- java.lang.Object
-
- com.sun.net.httpserver.Headers
-
public class Headers extends Object implements Map<String,List<String>>
HTTP请求和响应头通过此类,它实现接口表示Map
<String
,List
<String
>>。 密钥是不区分大小写的,表示标题名称和与每个密钥相关联的值的字符串是List
<String
>,在请求或响应中每个出现标题名称都有一个元素。例如,如果响应头实例包含一个具有两个值“value1和value2”的键“HeaderName”,则该对象将作为两个标题行输出:
HeaderName: value1 HeaderName: value2
提供所有正常的
Map
方法,但最有可能使用以下其他方便方法:-
getFirst(String)
返回单值头或多值头的第一个值。 -
add(String,String)
将给定的头值添加到给定键的列表中 -
set(String,String)
将给定的头字段设置为覆盖值列表中任何现有值的单个值。
此类中的所有方法都接受键值和值的
null
值。 但是,空值键永远不会出现在HTTP请求头中,不会在响应头中输出/发送。 空值可以表示为密钥的空条目(即列表为空)或密钥具有列表,但列表的值中的一个(或多个)为空。 空值作为包含密钥但不包含关联值的标题行输出。- 从以下版本开始:
- 1.6
-
-
-
构造方法摘要
构造方法 Constructor 描述 Headers()
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
add(String key, String value)
将给定的值添加到给定键的标题列表中。void
clear()
从该地图中删除所有的映射(可选操作)。boolean
containsKey(Object key)
如果此映射包含指定键的映射,则返回true
。boolean
containsValue(Object value)
如果此映射将一个或多个键映射到指定的值,则返回true
。Set<Map.Entry<String,List<String>>>
entrySet()
返回此地图中包含的映射的Set
视图。boolean
equals(Object o)
指示一些其他对象是否等于此。List<String>
get(Object key)
返回指定键映射到的值,如果此映射不包含该键的映射,则返回null
。String
getFirst(String key)
从给定键的String列表中返回第一个值(如果至少存在一个)。int
hashCode()
返回对象的哈希码值。boolean
isEmpty()
如果此映射不包含键值映射,则返回true
。Set<String>
keySet()
返回此地图中包含的键的Set
视图。List<String>
put(String key, List<String> value)
将指定的值与该映射中的指定键相关联(可选操作)。void
putAll(Map<? extends String,? extends List<String>> t)
将指定地图的所有映射复制到此映射(可选操作)。List<String>
remove(Object key)
如果存在(从可选的操作),从该地图中删除一个键的映射。void
set(String key, String value)
将给定值设置为给定键的唯一标题值。int
size()
返回此地图中键值映射的数量。Collection<List<String>>
values()
返回此地图中包含的值的Collection
视图。-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, entry, forEach, getOrDefault, merge, of, of, of, of, of, of, of, of, of, of, of, ofEntries, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
方法详细信息
-
size
public int size()
描述从接口Map
复制返回此地图中键值映射的数量。 如果地图包含Integer.MAX_VALUE
元素,返回Integer.MAX_VALUE
。
-
isEmpty
public boolean isEmpty()
说明从界面Map
复制如果此映射不包含键值映射,则返回true
。
-
containsKey
public boolean containsKey(Object key)
描述从接口Map
复制如果此映射包含指定键的映射,则返回true
。 更正式地说,返回true
当且仅当此映射包含一个键的映射关系k
这样Objects.equals(key, k)
。 (最多可以有一个这样的映射。)- Specified by:
-
containsKey
在接口Map<String,List<String>>
- 参数
-
key
- 在此地图中存在的密钥要进行测试 - 结果
-
true
如果此映射包含指定键的映射
-
containsValue
public boolean containsValue(Object value)
描述从接口Map
复制如果此映射将一个或多个键映射到指定的值,则返回true
。 更正式地,返回true
当且仅当此映射包含至少一个映射到值v
,使得Objects.equals(value, v)
。 对于Map
接口的大多数实现,此操作可能需要在地图大小的时间线性。- Specified by:
-
containsValue
在接口Map<String,List<String>>
- 参数
-
value
- 要在此地图中存在的值要进行测试 - 结果
-
true
如果该地图将一个或多个键映射到指定的值
-
get
public List<String> get(Object key)
描述从接口Map
复制返回指定键映射到的值,如果此映射不包含该键的映射,则返回null
。更正式地,如果此映射包含从密钥映射
k
到值v
使得Objects.equals(key, k)
,则此方法返回v
; 否则返回null
。 (最多可以有一个这样的映射。)如果此映射允许空值,则返回值为
null
并不一定表示映射不包含关键字的映射; 地图也可能将密钥明确地映射到null
。 可以使用containsKey
操作来区分这两种情况。
-
getFirst
public String getFirst(String key)
从给定键的String列表中返回第一个值(如果至少存在一个)。- 参数
-
key
- 搜索的关键 - 结果
- 与键相关联的第一个字符串值
-
put
public List<String> put(String key, List<String> value)
描述从接口Map
复制将指定的值与该映射中的指定键相关联(可选操作)。 如果映射先前包含了密钥的映射,则旧值将被指定的值替换。 (映射m
被称为包含关键字k
的映射,当且仅当m.containsKey(k)
将返回true
。)
-
add
public void add(String key, String value)
将给定的值添加到给定键的标题列表中。 如果映射不存在,则创建它- 参数
-
key
- 标题名称 -
value
- 要添加到标题的标题值
-
set
public void set(String key, String value)
将给定值设置为给定键的唯一标题值。 如果映射不存在,则创建它- 参数
-
key
- 标题名称 -
value
- 要设置的头值。
-
remove
public List<String> remove(Object key)
说明从接口Map
复制如果存在(从可选的操作),从该地图中删除一个键的映射。 更正式地,如果该映射包含从键k
到值v
的映射,使得Objects.equals(key, k)
,该映射被去除。 (地图最多可以包含一个这样的映射。)返回此映射先前关联该键的值,如果该映射不包含该键的映射,则返回
null
。如果此映射允许空值,则返回值为
null
并不一定表示该映射不包含该键的映射; 地图也可能将密钥显式映射到null
。一旦呼叫返回,该映射将不包含指定键的映射。
-
putAll
public void putAll(Map<? extends String,? extends List<String>> t)
说明从接口Map
复制将指定地图的所有映射复制到此映射(可选操作)。 此呼叫的效果等同于在此地图上调用put(k, v)
一次,从按键k
到指定地图中的值为v
每个映射。 如果在操作进行中修改了指定的地图,则此操作的行为是未定义的。
-
clear
public void clear()
描述从接口Map
复制从该地图中删除所有的映射(可选操作)。 此呼叫返回后,地图将为空。
-
keySet
public Set<String> keySet()
说明从接口Map
复制返回此地图中包含的键的Set
视图。 该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在集合中的迭代正在进行中修改映射(除了通过迭代器自己的remove
操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.remove
,Set.remove
,removeAll
,retainAll
,和clear
操作。 它不支持add
或addAll
操作。
-
values
public Collection<List<String>> values()
说明从接口Map
复制返回此地图中包含的值的Collection
视图。 集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在集合中的迭代正在进行时修改映射(除了通过迭代器自己的remove
操作),迭代的结果是未定义的。 该collection支持元素移除,即从映射中相应的映射,经由Iterator.remove
,Collection.remove
,removeAll
,retainAll
和clear
操作。 它不支持add
或addAll
操作。
-
entrySet
public Set<Map.Entry<String,List<String>>> entrySet()
说明从界面Map
复制返回此地图中包含的映射的Set
视图。 该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在集合中的迭代正在进行时(除了通过迭代器自己的remove
操作,或者通过迭代器返回的映射条目上的setValue
操作),映射被修改,则迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.remove
,Set.remove
,removeAll
,retainAll
和clear
操作。 它不支持add
或addAll
操作。
-
equals
public boolean equals(Object o)
描述从类复制:Object
指示一些其他对象是否等于此。equals
方法在非空对象引用上实现等价关系:- 自反性 :对于任何非空的参考值
x
,x.equals(x)
应该返回true
。 - 它是对称的 :对于任何非空引用值
x
和y
,x.equals(y)
应该返回true
当且仅当y.equals(x)
回报true
。 - 传递性 :对于任何非空引用值
x
,y
,并z
,如果x.equals(y)
回报true
和y.equals(z)
回报true
,然后x.equals(z)
应该返回true
。 - 它是一致的 :对于任何非空引用值
x
和y
,在多次调用x.equals(y)
始终返回true
或始终返回false
,没有设置中使用的信息equals
比较上的对象被修改。 - 对于任何非空的参考值
x
,x.equals(null)
应该返回false
。
该
equals
类方法Object
实现对象上差别可能性最大的相等关系; 也就是说,对于任何非空参考值x
和y
,当且仅当x
和y
引用相同对象(x == y
具有值true
)时,该方法返回true
。请注意,无论何时覆盖该方法,通常需要覆盖
hashCode
方法,以便维护hashCode
方法的一般合同,该方法规定相等的对象必须具有相等的哈希码。 - 自反性 :对于任何非空的参考值
-
hashCode
public int hashCode()
描述从类复制:Object
返回对象的哈希码值。 支持这种方法有利于哈希表,如HashMap
提供的那些 。hashCode
的总合同是:- 无论何时在执行Java应用程序时多次调用同一对象,
hashCode
方法必须始终返回相同的整数,前提是在对象上的equals
比较中没有使用任何信息进行修改。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。 - 如果根据
equals(Object)
方法两个对象相等,则在两个对象中的每个对象上调用hashCode
方法必须产生相同的整数结果。 - 不要求如果两个对象根据
Object.equals(java.lang.Object)
方法不相等,那么在两个对象中的每个对象上调用hashCode
方法必须产生不同的整数结果。 但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。
尽可能合理实用,由类
Object
定义的hashCode方法确实为不同对象返回不同的整数。 (在某个时间点,hashCode可能或可能不被实现为对象的存储器地址的某些功能。)- Specified by:
-
hashCode
在接口Map<String,List<String>>
- 重写:
-
hashCode
在Object
- 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
- 无论何时在执行Java应用程序时多次调用同一对象,
-
-