java - 如何在同一循环中访问哈希图中的 2 个键?
问题描述
我正在key1
尝试key2
使用Map.Entry
. 但一次entry.getKey()
只返回当前键。如何同时访问 2 个密钥?
for(Map.Entry<Long, NodeDisjoint1> entry : map.entrySet()) {
long parent1 = findSet(entry.getKey());
long parent2 = findSet(entry.getKey());
}
解决方案
执行以下操作:
Set<Map.Entry<Long, NodeDisjoint1>> entrySet = map.entrySet();
List<Map.Entry<Long, NodeDisjoint1>> entryList = new ArrayList<>(entrySet);
ListIterator<Map.Entry<Long, NodeDisjoint1>> itr = entryList.listIterator();
long parent1, parent2;
while(itr.hasNext()) {
parent1 = findSet((Entry)itr.next().getKey());
if(itr.hasNext()) {
parent2 = findSet((Entry)itr.next().getKey());
itr.previous();
}
}
演示:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.ListIterator;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> set = new LinkedHashSet<Integer>(Arrays.asList(10, 20, 30, 40));
List<Integer> list = new ArrayList<Integer>(set);
ListIterator<Integer> itr = list.listIterator();
while (itr.hasNext()) {
System.out.println(itr.next());
if (itr.hasNext()) {
System.out.println(itr.next());
itr.previous();
}
}
}
}
输出:
10
20
20
30
30
40
40
如有任何疑问/问题,请随意。
推荐阅读
- javascript - 我如何将所有代码包装在 imageBackground
- swiftui - 在 SwiftUI 中使用 Toggle 禁用 Slider 会导致样式问题
- python - 巨大的 Numpy 列表 - 如何获得 n 位?
- angular - 在模板中获取异步结果并用作普通变量?
- javascript - Javascript不会显示消息
- python - 如何在熊猫数据框中指定没有任何标题的列名的数据类型?
- ios - LazyVGrid 中的 SwiftUI NavigationLink 选择随机索引
- react-native - React Native 调用异步函数并在另一个异步函数中使用 return
- r - 如何重估R中的某些数据点?
- php - 会话变量没有正确传递?