1. 概述
在本教程中,我们将了解如何删除数组的第一个元素。
此外,我们还将看到使用Java集合框架中的数据结构如何使事情变得更容易。
2. 使用Arrays.copyOfRange()
首先,从技术上讲,删除数组的元素在Java中是不可能的。引用官方文档:
数组是一个容器对象,它包含固定数量的单一类型的值。数组的长度是在创建数组时确定的。创建后,它的长度是固定的。
这意味着只要我们直接使用数组,我们所能做的就是创建一个更小的新数组,然后不包含第一个元素。
幸运的是,JDK提供了一个我们可以使用的方便的静态辅助函数,称为Arrays.copyOfRange():
String[] stringArray = {"foo", "bar", "baz"};
String[] modifiedArray = Arrays.copyOfRange(stringArray, 1, stringArray.length);
请注意,此操作的成本为O(n),因为它每次都会创建一个新数组。
当然,这是一种从数组中删除元素的麻烦方法,如果你经常执行此类操作,则改用Java集合框架可能更明智。
3. 使用List实现
为了保持大致相同的数据结构语义(可通过索引访问的有序元素序列),使用List接口的实现是有意义的。
两个最常见的实现是ArrayList和LinkedList。
假设我们有以下List:
List<String> arrayList = new ArrayList<>();
// populate the ArrayList
List<String> linkedList = new LinkedList<>();
// populate the LinkedList
由于这两个类都实现了相同的接口,因此删除第一个元素的示例代码看起来是一样的:
arrayList.remove(0);
linkedList.remove(0);
在ArrayList的情况下,删除的成本是O(n),而LinkedList的成本是O(1)。
现在,这并不意味着我们应该在任何地方都使用LinkedList作为默认值,因为检索对象的成本是相反的。调用get(i)的成本在ArrayList的情况下为O(1),在LinkedList的情况下为O(n)。
4. 总结
我们已经了解了如何在Java中删除数组的第一个元素。此外,我们还了解了如何使用Java集合框架实现相同的结果。
与往常一样,本教程的完整源代码可在GitHub上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章