Java 删除ArrayList中最右边的元素

Java 删除ArrayList中最右边的元素,java,arrays,methods,removeall,Java,Arrays,Methods,Removeall,我想删除列表中最右边的一半,但这段代码有时还可以,但其他时间不行 如果l包含A→ B→ C→ D→ E,然后在调用 l.removightmosthalf(),l变为A→ B→ C public void removeRightmostHalf() { if (size % 2 != 0) { current = (size / 2) + 1; while(current <= size) { for (int i = current + 1;

我想删除列表中最右边的一半,但这段代码有时还可以,但其他时间不行

如果l包含
A→ B→ C→ D→ E
,然后在调用
l.removightmosthalf()
,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;
    }
  }
}
public void-removeRightmostHalf(){
如果(大小%2!=0)
{
电流=(尺寸/2)+1;

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

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

    else size=(size / 2);   
}
这是怎么工作的?
因为问题是删除右半部分以便将大小减小到一半,这将使数组的右半部分无法访问,就像Arraylist.Remove()所做的一样。

@geoffrey,因为她从Remove()复制了许多内容方法,在这里没有任何意义,她也没有问为什么/what@geoffrey去提交你的答案吧,没人能接受you@geoffrey如果数组列表包含A,B,C,D,E,你的方法将使其成为A,B你确实删除了最后3个元素,这不是她解释的。看看她的例子,如果元素像5一样奇数,你删除了last2@geoffrey我在Eclipse上对它进行了多次测试,但它并没有按照她的要求做for@geoffrey您已多次编辑答案,但仍然不起作用,在上一个答案中,它会显示所有元素
public void removeRightmostHalf() 
{
    if (size % 2 != 0)
       current = (size / 2) + 1;
    else
       current=size/2;
    nodes.subList(current,size).clear()
}