亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從數組(Java)中刪除元素

從數組(Java)中刪除元素

呼啦一陣風 2019-07-04 16:25:19
從數組(Java)中刪除元素有什么快速(美觀)的方法從Java數組中刪除元素嗎?
查看完整描述

3 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

你的問題不太清楚。從你自己的回答中,我能更清楚地看出你想做什么:

public static String[] removeElements(String[] input, String deleteMe) {
    List result = new LinkedList();

    for(String item : input)
        if(!deleteMe.equals(item))
            result.add(item);

    return result.toArray(input);}

注:這是未經測試的。錯誤檢查作為練習留給讀者(如果輸入或DeleteMe為空,我會拋出IllegalArgumentException;空列表對空列表輸入沒有意義。從數組中刪除空字符串可能是有意義的,但我也會將其保留為練習;目前,如果DeleteMe為null,它將在DeleteMe上調用等于時拋出NPE。)

我在這里做的選擇:

我用的是LinkedList。迭代應該同樣快,如果最終刪除了很多元素,就可以避免調整大小,或者分配太大的列表。您可以使用ArrayList,并將初始大小設置為輸入的長度。這可能不會有太大的區別。


查看完整回答
反對 回復 2019-07-04
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

最好的選擇是使用集合,但如果出于某種原因,請使用arraycopy..您可以使用它在稍微不同的偏移量中復制到同一個數組。

例如:

public void removeElement(Object[] arr, int removedIdx) {
    System.arraycopy(arr, removedIdx + 1, arr, removedIdx, arr.length - 1 - removedIdx);}

編輯回應評論(tl;dr):

這不是另一種好方法,它實際上是唯一可以接受的方法-任何允許這種功能的工具(比如Java.ArrayList或Apache utils)都會在幕后使用這個方法。而且,你真的應該使用ArrayList(或者鏈接列表,如果你刪除了很多),所以這不應該是一個問題,除非你做家庭作業。

要分配一個集合(創建一個新的數組),然后刪除一個元素(集合將使用arrayCopy完成),然后對其調用toArray(創建第二個新數組),因為每次刪除都會使我們意識到,它不是一個優化問題,而是嚴重的錯誤編程。

假設您有一個數組,例如,100 MB的RAM?,F在,您需要迭代它并刪除20個元素。

試試看.。

我知道你認為它不會那么大,或者如果你同時刪除了那么多,你會對它進行不同的編碼,但我已經修正了很多這樣的假設。


查看完整回答
反對 回復 2019-07-04
  • 3 回答
  • 0 關注
  • 6115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號