[英]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.