Java 如何删除和返回数组列表索引

Java 如何删除和返回数组列表索引,java,arraylist,Java,Arraylist,我试图删除并返回数组列表中名为deck的第一个索引处的对象。我的代码返回被调用的索引0 post remove()处的对象,因此它总是返回原始组数组列表的第二个索引。我不确定如何返回0处的索引,然后将其删除 public Card dealCard() { int i = 0; Card topCard = null; if(deck.size() > 0) { topCard = deck.get(i);

我试图删除并返回数组列表中名为deck的第一个索引处的对象。我的代码返回被调用的索引0 post remove()处的对象,因此它总是返回原始组数组列表的第二个索引。我不确定如何返回0处的索引,然后将其删除

public Card dealCard()
{
    int i = 0;                
    Card topCard = null;
    if(deck.size() > 0)
    {
        topCard = deck.get(i);
        deck.remove(topCard);        
    }           
    else
    {
        System.out.println("Fatal Error. Program now exiting.");
        System.exit(0);
    }
    return topCard;
}     
试试这个:

public Card dealCard()
{
    int i = 0;                
    Card topCard = null;
    //topCard.equals(deck.get(i));
    //deck.remove(topCard);
    if(deck.size() > 0)
    {
        topCard = deck.get(i);
        deck.remove(i);
        //temp = deck.remove(topCard);
        //temp.equals(deck.remove(topCard));           
    }           
    else
    {
        System.out.println("Fatal Error. Program now exiting.");
        System.exit(0);
    }
    return topCard;
}   

不要删除存储在可变顶卡中的内容,而是按其索引删除该项

将索引传递给元素时,返回位于
索引处的元素。所以你要做的就是

if(deck.size() > 0)
{
    topCard = deck.remove(i);
}           

这将把
topCard
设置为索引
i
中的任何内容,并从列表中删除元素

使用索引从列表中删除项目

deck.remove(i);

当您评论“deck.remove(topCard);”时,它是否返回第0个obj?我认为它是正确的。是什么让你认为它错了?是的,当remove()不在播放时它返回第0个对象它错了,因为它在调用remove()后返回索引0处的元素,而不是返回原始数组列表0处的索引,然后将其删除。否
topCard=deck.get(i)
topCard
设置为被移除前的第i张卡,然后
deck.remove(topCard)
将该卡从
deck
移除,但不会更改
topCard
。不幸的是,仍然会导致同样的问题。我不知道该怎么做。很抱歉,这里是新的。仍然会导致相同的问题。这仍然会返回调用remove()后的第一个索引,因此它缺少原始组数组列表的索引0。
deck.remove(i);