知了堂Java | Java基礎面試題(六)
20.Iterator 怎么使用?有什么特點
Java中的Iterator功能比較簡單,并且只能單向移動: (1) 使用方法iterator()要求容器返回一個Iterator。第一次調(diào)用Iterator的next()方法時,它返回序列的第 一個元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。 (2) 使用next()獲得序列中的下一個元素。 (3) 使用hasNext()檢查序列中是否還有元素。 (4) 使用remove()將迭代器新返回的元素刪除。 Iterator是Java迭代器最簡單的實現(xiàn),為List設計的ListIterator具有更多的功能,它可以從兩個方向遍歷 List,也可以從List中插入和刪除元素
21.Iterator 和 ListIterator 有什么區(qū)別?
Iterator可用來遍歷Set和List集合,但是ListIterator只能用來遍歷List。 Iterator對集合只能是前向遍歷,ListIterator既可以前向也可以后向。 ListIterator實現(xiàn)了Iterator接口,并包含其他的功能,比如:增加元素,替換元素,獲取前一個和 后一個元素的索引等等
22.線程有哪些狀態(tài)?
線程通常都有五種狀態(tài),創(chuàng)建、就緒、運行、阻塞和死亡。 創(chuàng)建狀態(tài)。在生成線程對象,并沒有調(diào)用該對象的start方法,這是線程處于創(chuàng)建狀態(tài)。 就緒狀態(tài)。當調(diào)用了線程對象的start方法之后,該線程就進入了就緒狀態(tài),但是此時線程調(diào)度程 序還沒有把該線程設置為當前線程,此時處于就緒狀態(tài)。在線程運行之后,從等待或者睡眠中回來 之后,也會處于就緒狀態(tài)。 運行狀態(tài)。線程調(diào)度程序?qū)⑻幱诰途w狀態(tài)的線程設置為當前線程,此時線程就進入了運行狀態(tài),開 始運行run函數(shù)當中的代碼。阻塞狀態(tài)。線程正在運行的時候,被暫停,通常是為了等待某個時間的發(fā)生(比如說某項資源就緒) 之后再繼續(xù)運行。sleep,suspend,wait等方法都可以導致線程阻塞。 死亡狀態(tài)。如果一個線程的run方法執(zhí)行結束或者調(diào)用stop方法后,該線程就會死亡。對于已經(jīng)死 亡的線程,無法再使用start方法令其進入就緒。
今日分享就到這拉。請持續(xù)關注我們,帶你了解更多Java相關干貨知識。