這涉及到一個問題,我剛纔問: Iterating through hashmap and creating unique objects - trying to prevent duplicates通過HashMap的迭代 - 拋出異常
雖然我認爲我可以申請一個類似的邏輯,我的刪除方法,我有我的add方法,異常我必須檢查一個不存在的記錄是否被拋出,即使我非常清楚記錄存在,應該刪除。我的刪除方法如下:
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 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);
}
我從每次拋出的remove方法中得到異常。
編輯:我做了一個小的變化所提供的答案,考慮到需要拋出一個異常,如果沒有找到匹配:
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;
}
你想才達到什麼?你的邏輯是什麼? –
我有一張可以添加到的贊助人名單的地圖,如下所示:Map.Entry entry:patrons.entrySet()。我想通過提供一個數字來刪除記錄,然後這個數字將與Patron對象中的卡號相對應,該對象由字符串名稱和int cardNumber構成。當顧客被創建時,int卡號與hashmap中贊助人的密鑰相同。 –
Benny
什麼是例外? – Thihara