Java 无法检索在hashmap中添加的值
当我第二次尝试检索数据时,此代码没有提供数据Java 无法检索在hashmap中添加的值,java,hashmap,Java,Hashmap,当我第二次尝试检索数据时,此代码没有提供数据 我输入域名和ip地址 我再次输入DN和Ip 我搜索第一个ip,它给出正确的结果 当我搜索第二个ip时,它说找不到域名 我不确定为什么我的循环没有给出正确的结果? 我可以看到数据是可用的,它进入if部分验证但不返回数据,它进入else部分并打印没有可用数据 //Main class { System.out.println("1. Add DNS details"); System.out.println(&q
//Main class
{
System.out.println("1. Add DNS details");
System.out.println("2. Find matching Domain Name");
System.out.println("3. Exit");
System.out.println("Enter your choice");
//After entering the choice
System.out.println("Enter the IP address to find the domain name");
ip = sc.nextLine();
DomainName = dBO.findDomainName(ip);
}
//FindDomainname.java class
public String findDomainName(String ipAddress) {
String domain=null;
if(domainMap.isEmpty()){
return domain;
}
else
for (Map.Entry<String, String> entry : domainMap.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
if (ipAddress.equals(v)) {
domain = k;
}
else
{
domain = "No matching domain name found";
}
}
return domain;
}
//主类
{
System.out.println(“1.添加DNS详细信息”);
System.out.println(“2.查找匹配的域名”);
System.out.println(“3.Exit”);
System.out.println(“输入您的选择”);
//输入选项后
System.out.println(“输入IP地址以查找域名”);
ip=sc.nextLine();
DomainName=dBO.findDomainName(ip);
}
//FindDomainname.java类
公共字符串findDomainName(字符串ipAddress){
字符串域=null;
if(domainMap.isEmpty()){
返回域;
}
其他的
对于(Map.Entry:domainMap.entrySet()){
字符串k=entry.getKey();
字符串v=entry.getValue();
if(IP地址等于(v)){
域=k;
}
其他的
{
domain=“未找到匹配的域名”;
}
}
返回域;
}
您需要在找到条目后立即跳出for循环,否则它将在地图中的下一个条目上移动,并且该条目可能不匹配。添加break语句,如下所示:
if (ipAddress.equals(v)) {
domain = k;
break;
}
您需要在找到条目后立即跳出for循环,否则它将在地图中的下一个条目上移动,并且该条目可能不匹配。添加break语句,如下所示:
if (ipAddress.equals(v)) {
domain = k;
break;
}
流式解决方案。当找到匹配项时,您的错误没有跳出循环
public String findDomainName(String ipAddress) {
return domainMap.entrySet().stream()
.filter(entry -> entry.getValue().equals(ipAddress))
.findAny().orElse(domainMap.isEmpty() ? null
: "No matching domain name found");
}
流式解决方案。当找到匹配项时,您的错误没有跳出循环
public String findDomainName(String ipAddress) {
return domainMap.entrySet().stream()
.filter(entry -> entry.getValue().equals(ipAddress))
.findAny().orElse(domainMap.isEmpty() ? null
: "No matching domain name found");
}
在调用
sc.nextLine()
之前,您是否有任何nexttint()
、nextDouble()
等?您不需要明确检查映射是否为空。循环对空映射的作用与显式检查相同。在调用sc.nextLine()
之前,是否有任何nextInt()
、nextDouble()
等?无需显式检查映射是否为空。循环对空映射执行与显式检查相同的操作。