手动操作ArrayList

时间:2012-10-19 16:17:41

标签: java arraylist

我有一个分配,我必须创建一个deque,但我不允许使用任何内置的类或接口。我正在使用数组列表实现我的双端队列。我的问题是,例如,当我必须添加到数组列表的开头(队列的开头)时,我不允许这样做:

public void addFirst(ArrayList<Integer> array) 
{
    array.add(0, int);
}

有没有办法在不使用add()函数的情况下执行此操作?比如手动添加到前面并将阵列的其余部分向右移动?或者也许创建一个新的数组列表并复制......我不确定。任何帮助都会很棒;我有很多函数要写,完成第一个函数肯定会让我朝着正确的方向前进。感谢

2 个答案:

答案 0 :(得分:2)

如果您不允许使用任何内置列表类,我怀疑您应该查看数组,而不是ArrayList。有System.arrayCopy等功能可以帮到你。

答案 1 :(得分:0)

class ArrayList< T >
{
   private int _capacity;
   private int _size;
   private T   _data;

   ArrayList( int capacity )
   {
      _capacity = capacity;
      _size     = 0;
      _data     = new T[_capacity];
   }

   void add( T t )
   {
      if( _size < _capacity )
      {
         _data[_size++] = t;
      }
      else
      {
         // do it yourself
      }
   }

   void insert( int index, T t )
   {
      if( _size < _capacity )
      {
         System.arrayCopy( _data, index, _data, index + 1, _size - index );
         _data[_size++] = t;
      }
      else
      {
         // do it yourself
      }
   }

   ...
}