当前位置: 首页 > 知识库问答 >
问题:

Java中向数组开头添加项的最简单方法

章高朗
2023-03-14

我需要最简单的方法将项目添加到Java数组的前面。
我需要Java数组而不是ArrayList。

共有3个答案

翁良弼
2023-03-14

根据Java教程(我完全建议初学者学习)

数组是一个容器对象,它保存固定数量的单一类型的值。数组的长度是在创建数组时确定的。创建后,其长度是固定的。

由于数组无法调整大小,因此可以覆盖第一个元素,但要执行插入,必须创建一个比前一个大1的新数组,将新元素放在第一个位置,并用现有元素填充数组的其余部分。

当然,在实践中不要这样做。相反,使用适合您实际用例的集合。

因此,您的问题的实际答案是:向java数组前面添加项的最简单方法是使用更好的集合类型,如Deque。

如果需要插入到前面,我想不出Java中有什么正当的理由不使用比原始数组更合适的集合。

杭泉
2023-03-14

Apache Commons Lang类“ArrayUtils”使这非常容易,如果您可以选择:

char[] arrayA = {'b', 'c'};
char[] arrayB = ArrayUtils.add(arrayA, 0, 'a');
// arrayB: [a, b, c]
徐栋
2023-03-14

有两种方法可以做到这一点。一,使用Object或另一种使用泛型。我建议您使用泛型,因为正如您将在这些示例中看到的那样,它为您提供了更多的灵活性。

在第一个实现中,函数add2Start inningOfArray使用泛型

public static <T> T[] add2BeginningOfArray(T[] elements, T element)
{
    T[] newArray = Arrays.copyOf(elements, elements.length + 1);
    newArray[0] = element;
    System.arraycopy(elements, 0, newArray, 1, elements.length);

    return newArray;
}

调用此函数非常简单。例如,如果您有一个类Dot,并且希望在Dot对象数组的开头添加一个元素,则只需执行以下操作:

int size = 20;
Dot[] dots = new Dot[size];
for (int i = 0; i < size; i++) {
    dots[i] = new Dot("This is a dot");
}

Dot goal = new Dot("This is a goal");

System.out.println(Arrays.toString(add2BeginningOfArray(dots, goal)));

您还可以实现一个函数,将函数参数声明为Object,如下例所示:

public static Object[] add2BeginningOfArray(Object[] elements, Object element){
    Object[] tempArr = new Object[elements.length + 1];
    tempArr[0] = element;
    System.arraycopy(elements, 0, tempArr, 1, elements.length);
}

现在,问题是什么?嗯,这不是什么大问题,但现在需要将数组声明为对象[],并使用这种声明来处理它。

Object[] foo = {"2", "3", "4"};

//adding an element to the beginning array
Object[] numbers = add2BeginningOfArray(foo, "1");
System.out.println(Arrays.toString(numbers));

对我来说,泛型方法更干净、更具可扩展性,因此我真的建议它胜过对象方法。

 类似资料:
  • 我需要一种最简单的方法将一个项添加到Java数组的前面。 我需要Java数组,而不是ArrayList。

  • 问题内容: 我需要 最简单的 方法将项目添加到Java数组的前面。 我需要Java数组而不是ArrayList。 问题答案:

  • 问题内容: 将字符串前缀添加到数组键的最快方法是什么? 输入项 所需的输出: 问题答案: 我发现PHPBench对于非简单的基准测试不是一个很好的来源。因此,除非您真正对运行感兴趣,否则不会正确显示哪种语法会更快。我汇总了一个简单的基准,以表明当您在迭代过程中同时使用键和值时,foreach实际上是最快的。 实际迫使PHP从循环迭代中读取值非常重要,否则它将尽最大努力优化它们。在下面的示例中,我使

  • 问题内容: 如何将项目添加到关联数组的开头?例如,说我有一个像这样的数组: 当向中添加内容时,得到: 我该如何做到 谢谢, Tee 问题答案: 您可以使用 并 运算符: 或。

  • 问题内容: 有没有一种更干净的方法来获取Swift中数组的最后两项?通常,我尝试避免使用这种方法,因为与索引一一对应很容易。(在此示例中,使用Swift 1.2。) 我希望有一些更接近Python的便利。 问题答案: 使用Swift 5时,您可以根据需要选择以下模式之一,以便从数组的最后两个元素中获取新的数组。 #1。使用数组的 使用Swift,符合协议的对象具有方法。数组具有以下声明: 返回一个

  • 问题内容: 是否可以在不迭代整个数组的情况下将字符串添加到String数组的开头。 问题答案: 唯一的方法是维护环形缓冲区。也就是说,您有一个计数器,它记住起始位置,然后移动它而不是移动数组中的所有条目。这仅适用于您重新定义“开始”的含义。 请参阅ArrayDeque的源代码,其中包含三个字段 因此,添加到开始像这样 注意:它移动头部,而不是将所有元素向下移动阵列。