删除ArrayList中最右边的元素

时间:2015-09-30 22:36:24

标签: java arrays methods removeall

我想删除列表中最右边的一半,但有时候这段代码没问题。其他时间不行。

如果l包含A → B → C → D → E,则在呼叫之后 l.removeRightmostHalf(),l变为A → B → C

public void removeRightmostHalf() {
  if (size % 2 != 0)
  {
    current = (size / 2) + 1;
    while(current <= size)
    {
      for (int i = current + 1; i < size; i++)
         nodes[i-1] = nodes[i];
      size--;
      if (size == 0)
        current = -1;
      else if (current == size)
        current = 0;
    }
  }
  else 
  {
    current = (size / 2);
    while(current <= size)
    {
      for (int i = current + 1; i < size; i++)
        nodes[i-1] = nodes[i];
      size--;
      if (size == 0)
        current = -1;
      else if (current == size)
        current = 0;
    }
  }
}

2 个答案:

答案 0 :(得分:1)

public void removeRightmostHalf() 
{
    if (size % 2 != 0)
       current = (size / 2) + 1;
    else
       current=size/2;
    nodes.subList(current,size).clear()
}

答案 1 :(得分:0)

此代码将完成工作尝试并告诉我。 如果我的回答是对你的,请不要忘记选择它作为正确的答案。

public void removeRightmostHalf() {
    if (size % 2 != 0) 
        size=(size / 2)+1;

    else size=(size / 2);   
}

这是怎么做的? 因为问题是要删除右半部分,以便将大小减小到一半,这将使数组的正确部分无法访问,就像Arraylist.Remove()那样。