簡體   English   中英

從 object 數組中刪除元素(Java)

[英]Remove element from object array (Java)

我正在開發基於卡片的游戲,並且正在開發數組編輯器工具(即,從數組中刪除卡片 object,插入卡片 object,查找卡片,對卡片進行排序等),所以我正在研究刪除 function 並且我不知道如何做到這一點,我有一個 arrayTool 接口設置了所有方法,一個 arrayToolModule class 設置用於植入方法,在我的 mainGame ZA2F2ED4F8EBC2CBB14C21A29DC4輸入,然后設置所有必要的變量。 非常感謝您的幫助。

主游戲 class:

        if(conIn==1)//Delete
        {
            System.err.println("Enter an Index: ");
            setIndex = in.nextInt();    
            AT.deleteCard(Deck, setIndex);
        }

數組工具模塊:

public Card[] deleteCard(Card[] CA, int index) {
        System.err.println("Delet was Called");

        
        CA = new Card[CA.length-1]
        
        for(int i=0;i<CA.length;i++)
        {
            if(i==index)
            {
                CA[i] = null;
            }
        
        for(Card i: CA)
        {
            System.out.print(" "+i.cardVal);
        }
        

        return CA;
    } 

這是我的嘗試,我不知道如何做到這一點。

您可以使用流,這將使這變得非常容易

public Card[] deleteCard(Card[] cards, int index) {
    Card cardToRemove = cards[index];
    return Arrays.stream(cards).filter(card -> !card.equals(cardToRemove)).toArray(Card[]::new);
}

或者

public Card[] deleteCard(Card[] cards, int index) {
    return IntStream.range(0, cards.length)
            .filter(i -> i != index)
            .mapToObj(i -> cards[i])
            .toArray(Card[]::new);
}

或者如果您不想使用流

public Card[] deleteCard(Card[] cards, int index) {
    Card[] newCards = new Card[cards.length - 1];
    for (int i = 0, j = 0; i < cards.length; i++) {
        if (i != index) {
            newCards[j++] = cards[i];
        }
    }
    return newCards;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM