抓取特定的 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)truedet.getNumberofHouses() == numberOfHousesfalse

第二次迭代都将是 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;

无需迭代地图的值。