【问题标题】:How can I retrieve the last record inserted into a Java Hashtable data structure?如何检索插入到 Java Hashtable 数据结构中的最后一条记录?
【发布时间】:2016-11-23 14:05:40
【问题描述】:

我在处理使用 Hashtable calcoliTable 数据结构的 Java 应用程序时遇到以下问题。

这是我的calcoliTable的内容:

{
FITTIZIO-2015=CalcoloValoreDellaGSBean [data=2015-11-27, maturato=249540.544989802560000, sommaMaturatoMovimento=249540.544989802560000], 

1=CalcoloValoreDellaGSBean [data=2015-11-27, maturato=249540.544989802560000, sommaMaturatoMovimento=249540.544989802560000]
}

如您所见,它包含 2 个具有 id=1id=FITTIZIO-2015 的条目。

我想检索最近插入的条目(应该是具有 id=FITTIZIO-2015 的条目)。

我尝试过这样做:

CalcoloValoreDellaGSBean calcoloPrecedente = (CalcoloValoreDellaGSBean) calcoliTable.get(calcoliTable.size())

但它不起作用,因为这样它正在搜索具有 id=2 的条目。

如何检索插入到我的 HashTable 中的最后一个条目?有没有办法不使用明确的关键?

【问题讨论】:

    标签: java data-structures hashtable


    【解决方案1】:

    使用带有访问顺序排序模式的LinkedHashMap

    Map<KeyType,ValueType> map = new LinkedHashMap<KeyType,ValueType> (16, 0.75F, true);
    

    然后

    map.entrySet().iterator().next()
    

    将为您提供您访问的最后一个条目(插入或检索)。

    【讨论】:

    • 我认为,问题在于 OP 支持遗留代码并且无法更改数据结构。
    • @AndrewTobilko 可能是这样,但问题中没有说明。
    • 另请注意,LinkedHashMap 未同步哪个 Hashtable,因此可能需要在外部进行同步。
    • @bradimus 哎呀。忘记了iterator()。谢谢!
    • OP 想要访问“最近插入的”条目,而不是最后访问的条目(来自 LinkedHashMap javadoc: accessOrder :排序模式 - 访问顺序为 true,插入顺序为 false)。在这里,我认为您需要使用 false,并访问迭代器的最后一个元素。不是很有效。
    猜你喜欢
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多