gpt4 book ai didi

java - 如何从 LinkedHashMap 中的特定键开始迭代?

转载 作者:搜寻专家 更新时间:2023-10-31 19:49:26 32 4
gpt4 key购买 nike

如果我有一个数据结构

Stock
{
String Symbol;
LinkedHashMap<Date,Double> DateForPrice;
}

我知道在 LinkedHashMap 中,我可以在不遍历整个列表的情况下获取特定日期的股票价格。

但是,如果我想从特定日期开始遍历 DateForPrice 的 LinkedHashMap,有没有什么办法可以不遍历整个列表?

最佳答案

LinkedHashMap 不提供在 map 数据的有序 View 中间开始迭代的方法。假设您的用例确实是您想要在某个 Date d 之后的所有日期并迭代这些日期,那么您应该将 map 存储为 TreeMap .这里的一个重要区别是 LinkedHashMap 的顺序是 insertion-order,而我们假设的用例是您想要自然的 key-orderTreeMap 维护这样一个 View ,通过 map 的键对 map 的内容进行排序。

TreeMap 的额外好处是允许您根据键创建 map 切片,因此您可以调用 tailMap(K k) , 以返回包含 k 之后出现的所有键的映射。在这种情况下,您可以使用起点 d 调用 tailMap

例如:

TreeMap<Date, Double> dateForPrice;

// load up dateForPrice

Date start = // the point to start your iteration

for(Entry<Date, Double> entry : dateForPrice.tailMap(start).entrySet()){
// loop code
}

tailMap 方法返回 SortedMap,它是不可迭代的。但是它有返回SetentrySet方法,它是Iterable的子接口(interface)。

方便的是,如果您想继续将数据存储在 LinkedHashMap 中,您可以简单地用当前实例加载一个 TreeMap(当然需要一些性能权衡) :

TreeMap<Date, Double> dateSortedDateForPrice = new TreeMap<Date, Double>(dateForPrice);

关于java - 如何从 LinkedHashMap 中的特定键开始迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591012/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com