下面我的代码在要插入的数组中查找String的位置,然后调整数组的大小并将值插入到复制的resized数组中,但它在两个操作(两个步骤)中这样做,这在我看来效率低下。我想知道是否可以调整大小并在一次操作中将元素插入到数组中。
private static void insertElement(String [] words, String word){
int i = 0;
int size = words.length;
for ( ; i < words.length ; i++){
if (words[i].compareTo(word) > 0)
break;
}
printArray(words);
words = Arrays.copyOf(words, size+1);
System.arraycopy(words, i, words, i+1, size - i);
// Another option : also 2 operations
// String [] words2 = new String[size+1];
// System.arraycopy(words, 0, words2, 0, size);
// words = words2;
// System.arraycopy(words, i, words, i+1, size - i);
words[i] = word;
printArray(words);
}
答案 0 :(得分:1)
如果查看内部使用数组的java.util.ArrayList.add(int, Object)
实现,您将看到实现与您的实现基本相同(就在数组中间添加元素而言)。 / p>
所以不,我不认为你能用数组完成你想要的东西。
答案 1 :(得分:0)
你最好的选择可能是使用其他人指出的ArrayList
。下面是一个代码示例:
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> words = new ArrayList<String>();
words.add("Word1");
words.add("Word2");
words.add("Word3");
System.out.println(String.format("Size of ArrayList: %d", words.size()));
words.remove("Word2");
System.out.println(String.format("Size of ArrayList: %d", words.size()));
}
}
/* Output:
Size of ArrayList: 3
Size of ArrayList: 2
*/