Java Hashmap - Getting/retrieving "key" 通过将 "value" 作为方法中的参数传递
Java Hashmap - Getting/retrieving "key" by passing "value" as parameter in a method
键和值都是用户输入的。
然后将值传递给 as 变量以检索值的相应键。
我的输出returns NULL。请指导我通过传递值来检索密钥。
public class DomainBO {
private Map<String,String> domainMap;
public Map<String,String> getDomainMap() {
return domainMap;
}
public void setDomainMap(Map<String,String> domainMap) {
this.domainMap = domainMap;
}
//This method should add the domainName as key and their ipAddress as value into a Map
public void addDNSDetails (String domainName,String ipAddress){
domainMap.put(domainName, ipAddress);
}
/*
* This method should return the domain name for the specific ipAddress which is passed as the argument.
* For example: If the map contains the key and value as:
* www.yahoo.net 205.16.214.15
www.gmail.net 195.116.254.154
www.tech.net 15.160.204.105
if the ipAddress is 195.116.254.154 the output should be www.gmail.net
*/
public String findDomainName(String ipAddress)
{
String domain = null;
for (Map.Entry<String, String> entry : domainMap.entrySet()) {
String k = entry.getKey();
String v = ipAddress;
if (k.equals(v)) {
domain = k;
}
}
return domain;
}
}
您实际上将密钥与您的 ipAdress
进行了比较,这就是您想要的,而不是:
public String findDomainName(String ipAddress) {
String domain = null;
for (Map.Entry<String, String> entry : domainMap.entrySet()) {
String k = entry.getKey();
String v = entry.getValue(); // <----
if (ipAddress.equals(v)) {
domain = k;
}
}
return domain;
}
可以缩短到
public String findDomainName(String ipAddress) {
for (Map.Entry<String, String> entry : domainMap.entrySet())
if (ipAddress.equals(entry.getValue()))
return entry.getKey();
return null;
}
使用流
public String findDomainName(String ipAddress) {
return domainMap.entrySet().stream().filter(e -> ipAddress.equals(e.getValue()))
.map(Map.Entry::getKey).findFirst().orElse(null);
}
顺便说一句:第一个代码 return 最后一场比赛,第二个代码 return 第一场比赛
键和值都是用户输入的。 然后将值传递给 as 变量以检索值的相应键。
我的输出returns NULL。请指导我通过传递值来检索密钥。
public class DomainBO {
private Map<String,String> domainMap;
public Map<String,String> getDomainMap() {
return domainMap;
}
public void setDomainMap(Map<String,String> domainMap) {
this.domainMap = domainMap;
}
//This method should add the domainName as key and their ipAddress as value into a Map
public void addDNSDetails (String domainName,String ipAddress){
domainMap.put(domainName, ipAddress);
}
/*
* This method should return the domain name for the specific ipAddress which is passed as the argument.
* For example: If the map contains the key and value as:
* www.yahoo.net 205.16.214.15
www.gmail.net 195.116.254.154
www.tech.net 15.160.204.105
if the ipAddress is 195.116.254.154 the output should be www.gmail.net
*/
public String findDomainName(String ipAddress)
{
String domain = null;
for (Map.Entry<String, String> entry : domainMap.entrySet()) {
String k = entry.getKey();
String v = ipAddress;
if (k.equals(v)) {
domain = k;
}
}
return domain;
}
}
您实际上将密钥与您的 ipAdress
进行了比较,这就是您想要的,而不是:
public String findDomainName(String ipAddress) {
String domain = null;
for (Map.Entry<String, String> entry : domainMap.entrySet()) {
String k = entry.getKey();
String v = entry.getValue(); // <----
if (ipAddress.equals(v)) {
domain = k;
}
}
return domain;
}
可以缩短到
public String findDomainName(String ipAddress) {
for (Map.Entry<String, String> entry : domainMap.entrySet())
if (ipAddress.equals(entry.getValue()))
return entry.getKey();
return null;
}
使用流
public String findDomainName(String ipAddress) {
return domainMap.entrySet().stream().filter(e -> ipAddress.equals(e.getValue()))
.map(Map.Entry::getKey).findFirst().orElse(null);
}
顺便说一句:第一个代码 return 最后一场比赛,第二个代码 return 第一场比赛