Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么CookieStore的默认实现不使用树状结构?_Java_Performance_Cookies_Cookiestore - Fatal编程技术网

Java 为什么CookieStore的默认实现不使用树状结构?

Java 为什么CookieStore的默认实现不使用树状结构?,java,performance,cookies,cookiestore,Java,Performance,Cookies,Cookiestore,InMemoryCookieStore是java的默认CookieStore,但主存储是ArrayList,在最坏的情况下,添加和删除操作将花费O(n),索引是map,它扫描键集以删除过期的cookie。为什么它使用树(可以很好地表示域,比如.b.com是.a.b.com的父级)和set(在固定时间内定位Cookie)。CookieStore有一个方法 List<HttpCookie> getCookies() List getCookies() 因此,它必须根据需要维护或复制所

InMemoryCookieStore是java的默认CookieStore,但主存储是ArrayList,在最坏的情况下,添加和删除操作将花费O(n),索引是map,它扫描键集以删除过期的cookie。为什么它使用树(可以很好地表示域,比如.b.com是.a.b.com的父级)和set(在固定时间内定位Cookie)。

CookieStore有一个方法

List<HttpCookie> getCookies()
List getCookies()

因此,它必须根据需要维护或复制所有cookie。我想他们认为维护一个列表是最有效的。

您有多少次会有这么多cookie,以至于O(n)在性能上明显大于O(1)?当在子优化和代码可管理性之间进行选择时,大多数选择干净、可管理的代码。

可能,但集合可能更有效,因为每次请求传入时都要添加op invoke。AFAIK它使用的所有列表数据类型都可以更改为set。我不认为顺序很重要,也不允许重复。同意,这就是为什么它只是一个默认实现。因此,我必须为我的网络爬虫实现一个更高效的工具~好吧,去吧,让你自己出局吧;)依我看,这是浪费时间。从标头解析每个cookie的成本将超过将cookie添加到CookieStore的成本很多个数量级,这使得CookieStore的优化在整个执行时间内完全不可见。