gpt4 book ai didi

Java - 在遍历 HashMap 时保留值的数据类型

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:10 25 4
gpt4 key购买 nike

我正在尝试迭代包含以下数据类型的 HashMap:

HashMap<city, neighbors>

city 是一个包含字符串值的对象,并在调用时返回该字符串。以下是构成我的 city 类的代码:

import java.util.*;  
public class city{
String city;
public city(String s){
this.city = s;
}
public String toString() {
return this.city;
}
}

neighbors 是一个包含城市 ArrayList 的对象。以下是构成我的 neighbors 类的代码:

import java.util.*;  
public class neighbors extends ArrayList<city> {
public neighbors (city[] n) {
for (city v : n)
this.add(v);
}
}

我正在尝试使用像这样使用迭代器的正常约定来迭代此 HashMap :

    Iterator it = graph.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
System.out.println("Key :" + pair.getKey()); //prints the city System.out.println("Value :" + pair.getValue()); //prints the neighbors
//for (city c: pair.getValue()){
// System.out.println("Test... " + c);
//}
}

上面的迭代器运行良好,并且可以很好地打印 getKey 和 getValue 语句。我遇到的问题是我很难迭代 Map.Entry (这是一个 ArrayList)的值。我注释掉的 for 循环是完成此任务的尝试。我意识到 getValue() 方法返回一个对象,但是如何保留 Value 的数据类型(ArrayList)?我是否应该在 neighbors 类中包含另一个遵循 city 类中的 toString() 策略的方法?如何遍历 HashMap 的邻居以便将它们与其他值进行比较?如果我的问题不清楚,请告诉我,任何提示、修改或建议都会有所帮助。

最佳答案

IteratorMap.Entry 变量使用参数化类型而不是原始类型:

Iterator<Map.Entry<city, neighbors>> it = graph.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<city, neighbors> pair = it.next();
System.out.println("Key :" + pair.getKey()); //prints the city
System.out.println("Value :" + pair.getValue()); //prints the neighbors
for (city c: pair.getValue()){
System.out.println("Test... " + c);
}
}

关于Java - 在遍历 HashMap 时保留值的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47165209/

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