2014-11-06 35 views
1

當我嘗試從HashSet中移除不存在的元素時,爲什麼它不會給運行時錯誤?帶輸出的Please see following program on ideone當我嘗試從HashSet中移除不存在的元素時,爲什麼它沒有給出運行時錯誤?

import java.util.*; 
public class HashSetTest2 { 
    public static void main(String [] args){ 
     HashSet hs=new HashSet(); 
     hs.add("B"); 
     hs.add("A"); 
     hs.add("D"); 
     hs.add("E"); 
     System.out.println(hs); 
     hs.add("F");   
     hs.remove("K");// Not present 
    }  
} 

//成功運行
輸出: [d,E,F,A,B]

+4

它返回布爾值說明特定元素是否被刪除(存在)或不存在 – DeepInJava 2014-11-06 11:46:28

+1

感謝您的回覆。我有。 – geeks 2014-11-06 11:47:21

+0

爲什麼它應該在不存在時出錯? – shazin 2014-11-06 11:47:27

回答

0

有多種方式告訴調用者一些操作是否成功。其中一個失敗時拋出異常,另一個返回布爾值,其中true表示「成功」,false「失敗」。

From the docs

返回true,如果此組包含的元素(或者,如果這組改變作爲調用的結果)。

可以解釋爲「返回false如果沒有元素被發現」。

0

this

這將只返回你真或假的基礎上,在價值的Hashset可用性。你可以往前走了,並有一個if條件,如:

if (!hs.remove("K")) { 
    //now handle what you want to do 
} 
0

因爲它的工作原理就像:)
參見文檔就在這裏:http://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html#remove(java.lang.Object)

如果在remove()方法來看一看:布爾方法,你可以看到程序員寫道:「如果存在,則從該集合中刪除指定的元素。」並且它還返回一個布爾值「如果集合包含指定的元素,則返回true」所以...如果存在該鍵,則返回true。

+0

感謝您的重播。我得到了答案。 – geeks 2014-11-06 11:54:30

相關問題