如何增加数组大小并在数组顶部添加每个新元素?

时间:2016-05-08 08:48:23

标签: java arrays string for-loop

您是否知道如何使用新元素动态增加数组的大小,并且每个新元素都位于Java的数组顶部?

我正在使用这个Java代码段:

    List<String> dbsuggestions = new ArrayList<String>();
    ...some for loop here



    String correctedText = correctMedicalAcronym(ac, classify, c);

    if(correctedText != null){
        System.out.println(correctedText);
        dbsuggestions.add(0, correctedText);
    }   

    ...end of the for loop

2 个答案:

答案 0 :(得分:1)

  

你知道如何使用new动态增加数组的大小   元素和每个新元素都在Java的数组顶部?

也许你不需要阵列。试着看一下清单。

Array是静态结构,当你声明你固定的是维度。如果您需要每次都在顶部添加新元素。你应该使用列表。

否则你可以使用其他策略,例如声明一个比你需要的更大的数组,并用批评来填充它,以避免每次都重新分析它。

我应该使用LinkedList还是ArrayList。这取决于你的需求:

LinkedList<E>

  • get(int index)是O(n)
  • add(E element)是O(1)
  • add(int index, E element)是O(n)
  • remove(int index)是O(n)--- remove(0)是O(1)
  • Iterator.remove()是O(1)&lt; --- LinkedList的主要好处
  • ListIterator.add(E element)是O(1)&lt; ---主要的好处 链表

ArrayList<E>

  • get(int index)是O(1)&lt; --- ArrayList的主要好处
  • add(E element)是O(1)摊销,但是自阵列以来O(n)最坏情况 必须调整大小并复制
  • add(int index, E element)是O(n - 指数)摊销,但O(n) 最坏情况(如上所述)
  • remove(int index)是O(n - 索引)(即删除last是O(1))
  • Iterator.remove()是O(n - 索引)
  • ListIterator.add(E element)是O(n - 索引)

仔细选择你的结构!

答案 1 :(得分:1)

  

你知道如何使用new动态增加数组的大小   元素和每个新元素都在Java的数组顶部?

您可以使用List,所有这些实现都会根据需要动态增加大小。如果您希望每个新元素都在顶部并且在删除时,您也总是从顶部弹出,我建议您通过Stack

Stack的合同是将每个元素放在最顶层并从顶部删除每个元素。 Forexample:

        Stack<String> stackDemo = new Stack<>();
        stackDemo.push("First");
        stackDemo.push("Second");
        stackDemo.push("Third");
        System.out.println(stackDemo.pop()); // will return Third