gpt4 book ai didi

java - 在 Java 中迭代 Map 时跳过索引

转载 作者:行者123 更新时间:2023-12-02 01:59:27 25 4
gpt4 key购买 nike

您好,我期待您在 Java 中的 Map 迭代期间跳过索引方面的帮助。我有一个包含 10 个元素的 map ,我想跳过索引 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()))
);

有没有办法在流中做到这一点,或者还有其他方法吗?

最佳答案

HashMap 没有排序,因此没有“索引”的概念。没有人知道索引 8 处的条目是什么 - 每次都可能不同。

更好的主意是检查 key 。如果没有与您要跳过的值关联的固定键,您可能应该设计数据的存储方式。因为如果这是真的,那么您将基于不存在的“索引”概念来存储数据,这效果不太好。

要跳过特定键,只需调用filter:

row.entrySet().stream()
.filter(e -> !e.getKey().equals(someKeyThatIdentifiesTheEntryAtIndex8))
.forEach(e ->
this.put(e.getKey(),new Cell(e.getValue().getRowNo(),e.getValue().getColNo(),e.getValue().getValue()))
);

如果您使用的是具有“索引”概念的集合,例如数组或列表,您可以执行以下操作:

int[] a = {1,2,3,4,5,6,7,8,9,10,11};

IntStream firstPart = Arrays.stream(a).limit(7);
IntStream secondPart = Arrays.stream(a).skip(8);
IntStream finalStream = IntStream.concat(firstPart, secondPart);
finalStream.forEach(System.out::println);

关于java - 在 Java 中迭代 Map 时跳过索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51853993/

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