当前位置: 首页 > 面试题库 >

将String添加到String数组的开头

长孙文栋
2023-03-14
问题内容

是否可以在不迭代整个数组的情况下将字符串添加到String数组的开头。


问题答案:

唯一的方法是维护环形缓冲区。也就是说,您有一个计数器,它记住起始位置,然后移动它而不是移动数组中的所有条目。这仅适用于您重新定义“开始”的含义。

请参阅ArrayDeque的源代码,其中包含三个字段

   86       /**
   87        * The array in which the elements of the deque are stored.
   88        * The capacity of the deque is the length of this array, which is
   89        * always a power of two. The array is never allowed to become
   90        * full, except transiently within an addX method where it is
   91        * resized (see doubleCapacity) immediately upon becoming full,
   92        * thus avoiding head and tail wrapping around to equal each
   93        * other.  We also guarantee that all array cells not holding
   94        * deque elements are always null.
   95        */
   96       private transient E[] elements;
   97   
   98       /**
   99        * The index of the element at the head of the deque (which is the
  100        * element that would be removed by remove() or pop()); or an
  101        * arbitrary number equal to tail if the deque is empty.
  102        */
  103       private transient int head;
  104   
  105       /**
  106        * The index at which the next element would be added to the tail
  107        * of the deque (via addLast(E), add(E), or push(E)).
  108        */
  109       private transient int tail;

因此,添加到开始像这样

  224       public void addFirst(E e) {
  225           if (e == null)
  226               throw new NullPointerException();
  227           elements[head = (head - 1) & (elements.length - 1)] = e;
  228           if (head == tail)
  229               doubleCapacity();
  230       }


  312       /**
  313        * @throws NoSuchElementException {@inheritDoc}
  314        */
  315       public E getFirst() {
  316           E x = elements[head];
  317           if (x == null)
  318               throw new NoSuchElementException();
  319           return x;
  320       }

注意:它移动头部,而不是将所有元素向下移动阵列。



 类似资料:
  • 问题内容: 假设我有很多字符串变量(例如100): 我想将这些String变量添加到ArrayList中,我现在正在做的是 我很好奇,有没有办法使用循环?例如。 问题答案: 使用数组: 这个想法非常流行,以至于有内置的方法可以做到这一点。例如: 会将您的数组元素添加到现有列表中。如果只需要一个仅包含数组元素的列表,则可以一行执行:

  • 是否可以将JavaScript中的UTF-8 BOM预置为生成的文本? 是的,在这种情况下,我确实需要UTF-8 BOM。

  • 本文向大家介绍在Java中将String的ArrayList转换为String数组,包括了在Java中将String的ArrayList转换为String数组的使用技巧和注意事项,需要的朋友参考一下 首先,让我们设置字符串的ArrayList- 现在,使用toArray()转换为字符串数组- 示例 以下是在Java中将String的ArrayList转换为String数组的程序- 输出结果

  • 问题内容: 因此,我一直在致力于在字符串之前添加0的命名约定。我正在尝试将所有内容都分解为if语句之前的快捷方式。在这里,我在整数前打印0,给我一个00005的答案。 现在,我想对字符串执行此操作。例如,如果String n =“ 5”; 如果String n =“ 20”,它将给出00005的答案;它将是00020。我不希望使用整数方法将字符串更改为and int,然后再更改回字符串。任何帮助,

  • 因此,对于我的学校项目,我们将使用SQL数据库,并在JFrame面板上显示值。 为了在JTable中显示数据,我们必须要求下一个语法:(def)

  • 问题内容: 我目前正在以指导学生编程的方式教学生。我告诉他们,他们可以在Oracle代码约定中找到大多数约定。 在我的上一教程中,一个学生问: 要么 是按惯例写的还是有区别的。我以前从未看过第一个版本,因此,我非常确定第二个版本是一个约定。但是我没有消息来源。 您能给我一个明确说明惯例中的哪一个的来源(最好是来自oracle,例如我上面链接的页面)吗? 两个表达式的等价 我知道这两个表达式是等效的