gpt4 book ai didi

java - 遍历 hashmap - 抛出异常

转载 作者:行者123 更新时间:2023-12-02 07:23:19 24 4
gpt4 key购买 nike

这与我之前提出的一个问题有关: Iterating through hashmap and creating unique objects - trying to prevent duplicates

虽然我认为我可以为我的删除方法应用与我的添加方法类似的逻辑,但我必须检查不存在的记录的异常被抛出,即使我非常清楚该记录存在并且应该被删除。我的删除方法如下:

    public boolean removePatron(int libraryCardNumber) throws PatronException {
boolean patronRemoved = false;
int keyToRemove = 0;
for (Map.Entry<Integer, Patron> entry : patrons.entrySet()) {
if (entry.getValue().getCardNumber() != libraryCardNumber) {
throw new PatronException("This record does not exist");

}
keyToRemove = entry.getKey();
}
patrons.remove(keyToRemove);
patronRemoved = true;
return patronRemoved;
}

作为引用,Patron 对象如下所示:

public class Patron {

//attributes
private String name = null;
private int cardNumber = 0;

//operations
public Patron (String name, int cardNumber){
this.name = name;
this.cardNumber = cardNumber;
}

public String getName(){
return name;

}

public int getCardNumber(){
return cardNumber;
}

}

我的测试只是先添加三个顾客,然后尝试通过我知道存在的卡号将其删除。我在 add 方法中添加了赞助人号码的 println ,这样我就可以在添加它们时在 Eclipse 中搞乱它,从而轻松地看到它们。

    @Test
public void testRemovePatron() {
boolean exceptionThrown = false;
try {
testLibrary.addPatron("TestName");
testLibrary.addPatron("TestName2");
testLibrary.addPatron("TestName3");
testLibrary.removePatron(1);
} catch (PatronException e) {
System.out.println(e.getMessage());
exceptionThrown = true;
fail("what the hell is going on");
}
assertFalse(exceptionThrown);
}

我每次都会从删除方法中抛出异常。

编辑:我对提供的答案做了一个小小的更改,以考虑到如果没有找到匹配项则需要抛出异常:

    public boolean removePatron(int libraryCardNumber) throws PatronException {
boolean patronRemoved = false;
int keyToRemove = 0;
for (Map.Entry<Integer, Patron> entry : patrons.entrySet())
{
if (entry.getValue().getCardNumber() == libraryCardNumber)
{
keyToRemove = entry.getKey();
patronRemoved = true;
}
}
if (patronRemoved)
{
patrons.remove(keyToRemove);
} else {
throw new PatronException("This record did not exist");
}
return patronRemoved;
}

最佳答案

对于任何不是您要查找的用户的用户,都会引发异常。更改此:

public boolean removePatron(int libraryCardNumber) throws PatronException{
boolean patronRemoved = false;
int keyToRemove = 0;
for (Map.Entry<Integer, Patron> entry : patrons.entrySet()) {
if (entry.getValue().getCardNumber() != libraryCardNumber) {
throw new PatronException("This record does not exist");

}
keyToRemove = entry.getKey();
}
patrons.remove(keyToRemove);
patronRemoved = true;
return patronRemoved;
}

对此:

public boolean removePatron(int libraryCardNumber) {
boolean patronRemoved = false;
int keyToRemove = 0;
for (Map.Entry<Integer, Patron> entry : patrons.entrySet())
{
if (entry.getValue().getCardNumber() == libraryCardNumber)
{
keyToRemove = entry.getKey();
found = true;
}
}
if (found)
{
patrons.remove(keyToRemove);
}
return patronRemoved;
}

或者更简洁,如 AmitD 所示

关于java - 遍历 hashmap - 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13898000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com