【问题标题】:Usage of ArrayList instead of Map in OkHttp在 OkHttp 中使用 ArrayList 而不是 Map
【发布时间】:2020-07-28 07:43:50
【问题描述】:

我正在浏览 okhttp3 中的 Header 类的源代码;为了存储标头和相应的值,使用ArrayList;所以对于第一个键 0,它的值将是 1 等等......

这是完成这项工作的方法:

final List<String> namesAndValues = new ArrayList<>(20);

Builder addLenient(String name, String value) {
      namesAndValues.add(name);
      namesAndValues.add(value.trim());
      return this;
    }

所以我只想知道使用 ArrayList 而不是像 Map 这样的数据结构的原因

【问题讨论】:

    标签: java android data-structures okhttp


    【解决方案1】:

    标题通常以多图Map&lt;String,List&lt;String&gt;&gt;呈现

    似乎在内部,他们决定使用一个用于相同目的的列表。最初甚至是一个数组。我想说这更像是一种开发偏好,因为这是内部代码,对观众来说是隐藏的。

    可能是节省一些内存而不是使用多映射和更少的垃圾 - 想象一下有 10 个标头,它将是一个包含 10 个列表 + 内部项目的映射。(通常这些是在每个 http 请求上创建的)

    Headers 类也应该有一个方法toMultimap

    【讨论】:

    猜你喜欢
    • 2010-09-24
    • 2010-09-29
    相关资源
    最近更新 更多