Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 存储与处理时间_Java_Performance_Algorithm - Fatal编程技术网

Java 存储与处理时间

Java 存储与处理时间,java,performance,algorithm,Java,Performance,Algorithm,我有一个列表(javaLinkedList)。每个对象都有一个键和一个值属性 客户端1需要完整的列表 客户端2将传递一个键并期望返回一个值 客户端3将传递一个值并期望返回一个键 问题是,既然Java集合使用指向实际对象的指针而不是存储对象,那么是否值得再存储两个映射 Map为客户端2提供服务。(javaHashMap) Map为客户端3提供服务。(javaHashMap) 这将节省遍历整个列表(list)和查找匹配键或值所需的处理时间。拥有两个映射将更容易编码,并且考虑到可读性优势,额外映射的内

我有一个
列表
(java
LinkedList
)。每个对象都有一个键和一个值属性

客户端1需要完整的列表

客户端2将传递一个键并期望返回一个值

客户端3将传递一个值并期望返回一个键

问题是,既然Java集合使用指向实际对象的指针而不是存储对象,那么是否值得再存储两个映射

Map
为客户端2提供服务。(java
HashMap

Map
为客户端3提供服务。(java
HashMap


这将节省遍历整个列表(
list
)和查找匹配键或值所需的处理时间。

拥有两个映射将更容易编码,并且考虑到可读性优势,额外映射的内存开销可以忽略不计。您是对的,因为它们是对象,所以您不必复制内容,只需复制数据结构


如果表中没有存储
MyObject
的键/值对,则可以使用,并消除
MyObject
的原始列表和开销。这意味着客户端1的迭代顺序并不重要。

我认为这篇文章可能会对你有所帮助 两个映射到MyObject不会给您太多空间,因为每个映射上都会创建条目对象和条目数组。你最好
Map和Map
。如果该键值是可以使用的简单类型,即高性能、内存优化的数据结构


另外,我建议你永远不要使用LinkedList

你说的是数十个、数百个还是数千个
MyObject
实例?除了Steve说的:你将执行多少次搜索,在哪种情况下?如果您在将20 GB保存到磁盘之前先保存1秒钟,或者在用户每天打开一次表单时保存50毫秒…您可能不需要任何优化。。。此外,您还可以考虑使用HasSeT代替LyKeDList.100个对象。这些对象是客户端经常查找的一种主数据。“百”非常小,多久查找一次?10个客户端每秒一次?1000个客户端每秒1000次?您还应该测量它是否是瓶颈(并尝试使用另一个数据结构而不是链表,例如
HashSet
)。哦,顺便说一句,如果它在服务器启动时加载一次,那么客户端也可以在启动时从
LinkedList
构建自己的
HashMap
(每个客户端存储它需要的内容,而不是原始列表)。我应该补充的是,列表是恒定的,不会更改,它在服务器启动时加载。