关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
上个月关门了。
改进这个问题
我需要提取并使用存储在Map内linkedlist中的departuretime和arrivaltime值,以用于下一步的赋值,但我不知道语法,或者是否可以从Map中的特定值中提取该组信息,并将其存储为值或新列表。这是可能的还是我应该放弃这种方法,走另一条路?
public Info (String destination, double departureTime, double arrivalTime){
this.destination = destination;
this.departureTime = departureTime;
this.arrivalTime = arrivalTime;
}
public class Route {
Map<String,LinkedList<Info>> airportFlightMap = new HashMap<>();
LinkedList<Info> destinations;
private int array[];
private int arraySize;
private int heapSize;
public Route(int arraySize) {
array = new int [arraySize];
this.arraySize = arraySize;
heapSize = 0;
}
public void fillHash(String origin, String destination, double departureTime, double arrivalTime) {
if(airportFlightMap.containsKey(origin)){
destinations = airportFlightMap.get(origin);
destinations.add(new Info(destination, departureTime/100, arrivalTime/100));
}
else{
destinations = new LinkedList<>();
destinations.add(new Info(destination, departureTime/100, arrivalTime/100));
airportFlightMap.put(origin, destinations);
}
}
2条答案
按热度按时间zy1mlcev1#
迭代
map
你可以检查这个问题。有多种方法可以做到这一点。现在,你的结构是这样的:
哪里
key
是一个String
以及value
是一个LinkedList<Info>
. 所以你可以这样想:遍历Map就像遍历每个
key
. 然后你可以得到键或者值。此时,使用以下代码:
您将在控制台中打印密钥。另外,请注意
forEach
有两个值:k
以及v
,它们是key
以及value
. 所以你可以得到每个键的每个值。这意味着您可以在Map中迭代每个项目。那么,如何得到一个特定的值呢?就像电话一样简单
get()
方法:使用
get()
您可以检索与传递到paramater中的键相关联的值。所以你可以用它来得到你想要的值。
示例如下:
获取值
departureTime
以及arrivalTime
你只需要在每一个列表上反复寻找。你也可以使用lambda表达式,如果你想,但我认为这些高阶函数是不容易理解的乞丐。
但你可以检查一下
作为代码示例,您可以使用filter在整个列表中搜索值,而不必遍历每个位置:
pxiryf3j2#
输入这样的内容可以解决问题: