【发布时间】:2018-08-15 06:33:57
【问题描述】:
您好,期待您在 Java 中的 Map 迭代期间跳过索引的帮助。 我有一个包含 10 个元素的地图,我想跳过索引 8 上的元素如何实现目标。 我尝试使用streams() 的skip() 方法,但它正在从开始跳过元素到您输入的计数。以下是我的方法...
public void copyRow(Row row){
this.clear();
row.entrySet().stream().skip(8).forEach(e ->
this.put(e.getKey(),new Cell(e.getValue().getRowNo(),e.getValue().getColNo(),e.getValue().getValue()))
);
有没有办法在流中做到这一点,或者还有其他方法吗?
【问题讨论】:
-
这是什么类型的地图?
-
"map" 和 "index" 通常不兼容。即使是排序的地图也没有明确的索引概念,而是所有位置操作(头、尾等)都基于元素比较。因此,如果您有一个排序的地图并且知道什么元素应该位于“索引”8(或 9)处,您可以使用
tailMap(element at 9)(包括传递的元素)。 -
顺便说一句,对我来说
Row表示的不仅仅是一张简单的地图。如果是这种情况,可能有比使用条目集更好的东西,我们只需要知道Row实际上是什么。 -
另一个想法:如果
entrySet()提供的顺序对您来说没问题(取决于您拥有的地图,请注意,除非它是排序的地图,否则该顺序可能不是确定性的)您可以尝试2 步方法:首先使用limit(7)获取前 7 个元素,然后使用skip(8)获取元素 9+。 - 免责声明:请先阅读所有其他 cmets 和答案,然后尝试选择更合适的方法。仅将其用作最后的手段。
标签: java hashmap iteration java-stream