抓取特定的 HashMap 实体并抓取详细信息
Grab a specific HashMap entity and grab details
这是我的 类:
房屋详情:
private String forename;
private String surname;
private double houseName;
private int numberofHouses;
public CreditCardDetails(String forename, String surname, double houseName, int numberofHouses) {
this.forename = forename;
this.surname = surname;
this.houseName = houseName;
this.numberofHouses = numberofHouses;
}
购房:
HashMap <String, HouseDetails> houses = new HashMap<String, HouseDetails>();
这只是一个例子。
我试图先查看 houseNumber 是否存在,然后检查 houseNumber 是否与 numberOfHouses 关联。
这是我目前尝试过的方法:
public void checkIfHouseMatches(String number ,int numberofHouses){
for (HouseDetails det : houses.values())
if (houses.containsKey(number) && det.getNumberofHouses() == numberOfHouses) {
System.out.println("True");
}
else {
}
但是,如果 numberofHouses 匹配 HashMap 中的任何实体,而不是我输入的特定门牌号,则此 returns 为真。
我该如何解决这个问题?
你的支票有误。
你现在正在做的是检查地图是否包含数字,如果任何 HouseDetails
有你传递的 numberOfHouses
,它会 return true
假设您有 3 个房屋详细信息
HouseDetail1 (number = 1, noOfHouses = 5)
HouseDetail2 (number = 2, noOfHouses = 6)
HouseDetail3 (number = 3, noOfHouses = 5)
并且您搜索了数字 1 和 noOfHouses = 6
第一次迭代将是错误的,因为 houses.containsKey(number)
是 true
但 det.getNumberofHouses() == numberOfHouses
是 false
第二次迭代都将是 true
——但这是错误的。将其更改为类似 :
if(houses.containsKey(number)){
if(houses.get(number).getNumberofHouses() == numberOfHouses){
System.out.println("True");
}else{
}
}
如果要访问 HashMap 中特定条目的详细信息,请使用 get(Object key)
方法。在您的情况下,checkIfHouseMatches 可以实现为:
return houses.containsKey(number) ? houses.get(number).getNumberofHouses() == numberofHouses : false;
无需迭代地图的值。
这是我的 类:
房屋详情:
private String forename;
private String surname;
private double houseName;
private int numberofHouses;
public CreditCardDetails(String forename, String surname, double houseName, int numberofHouses) {
this.forename = forename;
this.surname = surname;
this.houseName = houseName;
this.numberofHouses = numberofHouses;
}
购房:
HashMap <String, HouseDetails> houses = new HashMap<String, HouseDetails>();
这只是一个例子。 我试图先查看 houseNumber 是否存在,然后检查 houseNumber 是否与 numberOfHouses 关联。
这是我目前尝试过的方法:
public void checkIfHouseMatches(String number ,int numberofHouses){
for (HouseDetails det : houses.values())
if (houses.containsKey(number) && det.getNumberofHouses() == numberOfHouses) {
System.out.println("True");
}
else {
}
但是,如果 numberofHouses 匹配 HashMap 中的任何实体,而不是我输入的特定门牌号,则此 returns 为真。
我该如何解决这个问题?
你的支票有误。
你现在正在做的是检查地图是否包含数字,如果任何 HouseDetails
有你传递的 numberOfHouses
,它会 return true
假设您有 3 个房屋详细信息
HouseDetail1 (number = 1, noOfHouses = 5)
HouseDetail2 (number = 2, noOfHouses = 6)
HouseDetail3 (number = 3, noOfHouses = 5)
并且您搜索了数字 1 和 noOfHouses = 6
第一次迭代将是错误的,因为 houses.containsKey(number)
是 true
但 det.getNumberofHouses() == numberOfHouses
是 false
第二次迭代都将是 true
——但这是错误的。将其更改为类似 :
if(houses.containsKey(number)){
if(houses.get(number).getNumberofHouses() == numberOfHouses){
System.out.println("True");
}else{
}
}
如果要访问 HashMap 中特定条目的详细信息,请使用 get(Object key)
方法。在您的情况下,checkIfHouseMatches 可以实现为:
return houses.containsKey(number) ? houses.get(number).getNumberofHouses() == numberofHouses : false;
无需迭代地图的值。