从数组中删除第一个元素的最佳方法是什么?
我有字符串数组(),我需要删除第一项。我怎样才能有效地做到这一点?String[]
Java 中数组的大小无法更改。因此,从技术上讲,您无法从数组中删除任何元素。
模拟从数组中删除元素的一种方法是创建一个新的、较小的数组,然后将原始数组中的所有元素复制到新的、较小的数组中。
String[] yourArray = Arrays.copyOfRange(oldArr, 1, oldArr.length);
但是,我不会建议上述方法。你真的应该使用.列表允许您在任何索引中添加和删除项目。这看起来类似于以下内容:List<String>
List<String> list = new ArrayList<String>(); // or LinkedList<String>();
list.add("Stuff");
// add lots of stuff
list.remove(0); // removes the first item
最简单的方法可能如下所示 - 您基本上需要构造一个比元素小一点的新数组,然后将要保留的元素复制到正确的位置。
int n=oldArray.length-1;
String[] newArray=new String[n];
System.arraycopy(oldArray,1,newArray,0,n);
请注意,如果您发现自己经常执行此类操作,则可能表明您实际上应该使用不同类型的数据结构,例如链表。每次构造一个新数组是一个 O(n) 操作,如果您的数组很大,这可能会变得昂贵。链表会给你O(1)删除第一个元素。
另一种想法是根本不删除第一项,而只是递增一个指向正在使用的第一个索引的整数。阵列的用户需要考虑此偏移量,但这可能是一种有效的方法。Java String 类在创建子字符串时实际上在内部使用此方法。