在一个操作中调整和复制Java数组

时间:2017-08-10 19:41:55

标签: java arrays

下面我的代码在要插入的数组中查找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);

        }

2 个答案:

答案 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
*/