类 Headers

java.lang.Object
com.sun.net.httpserver.Headers
所有已实现的接口:
Map<String,List<String>>

public class Headers extends Object implements Map <String ,List <String >>
HTTP 请求和响应标头由此类实现接口 Map <String , List <String >> 表示。键是表示标头名称的不区分大小写的字符串,与每个键关联的值是一个 List <String >,请求或响应中每次出现的标头名称都有一个元素。

例如,如果响应标头实例包含一个键“HeaderName”和两个值“value1 和 value2”,则此对象将输出为两个标题行:

 HeaderName: value1
 HeaderName: value2
 
提供了所有常规的 Map 方法,但最有可能使用以下附加的便捷方法:

Headers 的实例是可变的或者不变的. A 可变标头允许添加、删除或修改标头名称和值,例如 HttpExchange.getResponseHeaders() 返回的实例。一个不可变的标头不允许对标头名称或值进行任何修改,例如 HttpExchange.getRequestHeaders() 返回的实例。不可变标头实例的增变器方法无条件抛出 UnsupportedOperationException

此类中的所有方法都拒绝键和值的 null 值。 null 密钥永远不会出现在 HTTP 请求或响应标头中。

自从:
1.6
  • 构造方法详细信息

    • Headers

      public Headers()
      创建 Headers 的空实例。
    • Headers

      public Headers(Map <String ,List <String >> headers)
      从给定的 headers 创建一个具有相同标头名称和值的可变 Headers
      参数:
      headers - 标头名称和值的映射
      抛出:
      NullPointerException - 如果 headers 或其任何名称或值是 null,或者任何值包含 null。
      自从:
      18
  • 方法详情

    • size

      public int size()
      从接口 Map 复制的描述
      返回此map中键值映射的数量。如果map包含超过 Integer.MAX_VALUE 个元素,则返回 Integer.MAX_VALUE
      指定者:
      size 在接口 Map<String,List<String>>
      返回:
      此map中键值映射的数量
    • isEmpty

      public boolean isEmpty()
      从接口 Map 复制的描述
      如果此map不包含键值映射,则返回 true
      指定者:
      isEmpty 在接口 Map<String,List<String>>
      返回:
      true 如果此map不包含键值映射
    • containsKey

      public boolean containsKey(Object  key)
      从接口 Map 复制的描述
      如果此map包含指定键的映射,则返回 true。更正式地说,返回 true 当且仅当此map包含键 k 的映射使得 Objects.equals(key, k) 。 (最多可以有一个这样的映射。)
      指定者:
      containsKey 在接口 Map<String,List<String>>
      参数:
      key - 要测试其在此map中是否存在的键
      返回:
      true 如果此map包含指定键的映射
    • containsValue

      public boolean containsValue(Object  value)
      从接口 Map 复制的描述
      如果此map将一个或多个键映射到指定值,则返回 true。更正式地说,返回 true 当且仅当此map包含至少一个映射到值 v 使得 Objects.equals(value, v) 。对于 Map 接口的大多数实现,此操作可能需要与映射大小成线性关系的时间。
      指定者:
      containsValue 在接口 Map<String,List<String>>
      参数:
      value - 要测试其在此map中是否存在的值
      返回:
      true 如果此map将一个或多个键映射到指定值
    • get

      public List <String > get(Object  key)
      从接口 Map 复制的描述
      返回指定键映射到的值,如果此map不包含键的映射,则返回 null

      更正式地说,如果此map包含从键 k 到值 v 的映射,使得 Objects.equals(key, k) ,则此方法返回 v ;否则返回 null 。 (最多可以有一个这样的映射。)

      如果此map允许空值,则 null 的返回值不允许一定指示映射不包含键的映射;map也可能将密钥显式映射到 nullcontainsKey 操作可用于区分这两种情况。

      指定者:
      get 在接口 Map<String,List<String>>
      参数:
      key - 要返回其关联值的键
      返回:
      指定键映射到的值,如果此map不包含键的映射,则返回 null
    • getFirst

      public String  getFirst(String  key)
      返回给定 keyList String 值中的第一个值,如果不存在 key 的映射,则返回 null 的第一个值。
      参数:
      key - 要搜索的键
      返回:
      与键关联的第一个 String 值,或者 null 如果不存在键的映射
    • put

      public List <String > put(String  key, List <String > value)
      从接口 Map 复制的描述
      将指定值与此map中的指定键相关联(可选操作)。如果map先前包含键的映射,则旧值将替换为指定值。 (据说映射 m 包含键 k 的映射当且仅当 m.containsKey(k) 将返回 true 。)
      指定者:
      put 在接口 Map<String,List<String>>
      参数:
      key - 与指定值关联的键
      value - 与指定键关联的值
      返回:
      key 关联的先前值,如果没有 key 的映射,则为 null 。 (如果实现支持 null 值,则 null 返回还可以指示之前将 nullkey 相关联的映射。)
    • add

      public void add(String  key, String  value)
      将给定的 value 添加到给定的 key 的标头列表中。如果map尚不存在,则会创建它。
      参数:
      key - 标头名称
      value - 添加到标头的值
    • set

      public void set(String  key, String  value)
      将给定的 value 设置为给定的 key 的唯一标头值。如果map尚不存在,则会创建它。
      参数:
      key - 标头名称
      value - 要设置的标头值
    • remove

      public List <String > remove(Object  key)
      从接口 Map 复制的描述
      如果存在,则从此map中删除键的映射(可选操作)。更正式地说,如果此map包含从键 k 到值 v 的映射使得 Objects.equals(key, k) ,则该map将被删除。 (map最多可以包含一个这样的映射。)

      返回此map先前与键相关联的值,如果map不包含键的映射,则返回 null

      如果此map允许空值,则 null 的返回值不允许一定指示映射不包含键的映射;map也可能将密钥显式映射到 null

      一旦调用返回,map将不包含指定键的映射。

      指定者:
      remove 在接口 Map<String,List<String>>
      参数:
      key - 要从map中删除其映射的键
      返回:
      key 关联的先前值,如果没有 key 的映射,则为 null
    • putAll

      public void putAll(Map <? extends String ,? extends List <String >> t)
      从接口 Map 复制的描述
      将指定map中的所有映射复制到此map(可选操作)。此调用的效果等同于在指定map中从键 k 到值 v 的每个映射调用一次此map上的 put(k, v) 。如果指定的map在操作过程中被修改,则此操作的行为是未定义的。
      指定者:
      putAll 在接口 Map<String,List<String>>
      参数:
      t - 要存储在此map中的映射
    • clear

      public void clear()
      从接口 Map 复制的描述
      从此map中删除所有映射(可选操作)。此调用返回后map将为空。
      指定者:
      clear 在接口 Map<String,List<String>>
    • keySet

      public Set <String > keySet()
      从接口 Map 复制的描述
      返回此map中包含的键的 Set 视图。该集合由map支持,因此对map的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改map(除了通过迭代器自己的 remove 操作),迭代的结果是不确定的。该集合支持元素删除,即通过 Iterator.removeSet.removeremoveAllretainAllclear 操作从map中删除相应的映射。它不支持 addaddAll 操作。
      指定者:
      keySet 在接口 Map<String,List<String>>
      返回:
      此map中包含的键的集合视图
    • values

      public Collection <List <String >> values()
      从接口 Map 复制的描述
      返回此map中包含的值的 Collection 视图。集合由map支持,因此对map的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改map(除了通过迭代器自己的 remove 操作),迭代的结果是不确定的。该集合支持元素删除,即通过 Iterator.removeCollection.removeremoveAllretainAllclear 操作从map中删除相应的映射。它不支持 addaddAll 操作。
      指定者:
      values 在接口 Map<String,List<String>>
      返回:
      此map中包含的值的集合视图
    • entrySet

      public Set <Map.Entry <String ,List <String >>> entrySet()
      从接口 Map 复制的描述
      返回此map中包含的映射的 Set 视图。该集合由map支持,因此对map的更改会反映在集合中,反之亦然。如果在对集合进行迭代时映射被修改(除了通过迭代器自己的 remove 操作,或通过迭代器返回的映射条目上的 setValue 操作),迭代的结果是未定义的。该集合支持元素移除,即通过 Iterator.removeSet.removeremoveAllretainAllclear 操作从map中移除相应的映射。它不支持 addaddAll 操作。
      指定者:
      entrySet 在接口 Map<String,List<String>>
      返回:
      此map中包含的映射的集合视图
    • equals

      public boolean equals(Object  o)
      从类复制的描述:Object
      指示某个其他对象是否“等于”这个对象。

      equals 方法在非空对象引用上实现等价关系:

      • 这是反身的:对于任何非空参考值 xx.equals(x) 应该返回 true
      • 这是对称的:对于任何非空参考值 xy,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 应返回 true
      • 这是transitive:对于任何非空引用值 xyz ,如果 x.equals(y) 返回 true 并且 y.equals(z) 返回 true ,那么 x.equals(z) 应该返回 true
      • 这是持续的:对于任何非空引用值 xyx.equals(y) 的多次调用一致地返回 true 或一致地返回 false ,前提是在对象的 equals 比较中使用的信息没有被修改。
      • 对于任何非空参考值 xx.equals(null) 应该返回 false

      等价关系将其操作的元素划分为等价类;等价类的所有成员彼此相等。等价类的成员可以相互替代,至少出于某些目的。

      指定者:
      equals 在接口 Map<String,List<String>>
      重写:
      equals 在类 Object
      参数:
      o - 要与之比较的参考对象。
      返回:
      true 如果此对象与 obj 参数相同; false否则。
      参见:
    • hashCode

      public int hashCode()
      从类复制的描述:Object
      返回对象的哈希码值。支持此方法是为了哈希表的好处,例如 HashMap 提供的哈希表。

      hashCode的总合同为:

      • 每当在 Java 应用程序的执行期间对同一个对象多次调用时,hashCode 方法必须始终返回相同的整数,前提是在对象的equals 比较中使用的信息没有被修改。从一个应用程序的一次执行到同一应用程序的另一次执行,该整数不需要保持一致。
      • 如果根据 equals 方法两个对象相等,则对这两个对象中的每一个调用 hashCode 方法必须产生相同的整数结果。
      • not 要求如果根据 equals 方法两个对象不相等,则对这两个对象中的每一个调用 hashCode 方法必须产生不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同的整数结果可能会提高哈希表的性能。
      指定者:
      hashCode 在接口 Map<String,List<String>>
      重写:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见:
    • of

      public static Headers  of(String ... headers)
      返回一个不可变的 Headers,并将给定的名称值对作为其标头集。

      提供的 String 实例必须交替作为标头名称和标头值。要将多个值添加到同一个名称,必须为每个新值提供相同的名称。如果提供的 headers 为空,则返回一个空的 Headers

      参数:
      headers - 名称值对列表
      返回:
      具有给定名称值对的不可变标头
      抛出:
      NullPointerException - 如果 headers 或其任何元素为空。
      IllegalArgumentException - 如果提供的字符串数量为奇数。
      自从:
      18
    • of

      public static Headers  of(Map <String ,List <String >> headers)
      从给定的 headers 返回具有相同标头名称和值的不可变 Headers
      参数:
      headers - 标头名称和值的映射
      返回:
      不可变的标头
      抛出:
      NullPointerException - 如果 headers 或其任何名称或值是 null,或者任何值包含 null。
      自从:
      18