随后将元素添加到数组中

时间:2014-11-09 08:33:42

标签: java arrays arraylist

我有一个listOfStrings,我想创建一个新的listOfStringsTwo(两个列表都是ArrayLists),其中每个元素逐步连接到下一个元素。这是一个例子:

如果原始listOfStrings有元素" hi","你好"和" bye&#34 ;, listOfStringsTwo将具有以下内容作为其元素:

listOfStringsTwo.get(o) would give "hi"
listOfStringsTwo.get(1) would give "hi" "hello"
listOfStringsTwo.get(2) would give "hi" "hello" "bye"

我觉得我需要使用for循环,但我不确定如何继续。我已经看过Java文档和无数的教程,但我仍然坚持这个看似简单的问题。


这是我关于stackoverflow的第一篇文章,所以,如果我的问题是错误的类型或者如果有任何问题,请告诉我!我自己学习Java并且陷入了困境。

3 个答案:

答案 0 :(得分:2)

编辑:请参阅我的答案底部以获取更新。

如果我理解你想要达到的目标,那么情况如下:

  original.get(0) gives "hi"
  original.get(1) gives "hello"
  original.get(2) gives "bye"

并且您希望有第二个列表从原始文件中复制项目,但是以累积方式复制:

  seocnd.get(0) gives "hi"
  seocnd.get(1) gives "hi hello"
  seocnd.get(2) gives "hi hello bye"

这是一种方法:

List<String> originalList = new List<String>();

originalList.add("hi");
originalList.add("hello");
originalList.add("bye");

List<String> listofStringsTwo = new List<String>();

for (int i=0; i<original.size ; i++)
{
  String temp = "";
  for (int j=0;j<=i;j++)
  {
    temp += original.get(j) + " ";
  }
  listofStringsTwo.add( temp );
}

更新:如果您需要在列表中包含第四个元素,那么只需将其正常添加到原始元素即可。它将自动附加到第二个列表的第四个元素,而无需调整它下面的代码。

originalList.add("hi");
originalList.add("hello");
originalList.add("bye");
originalList.add("goodbye");

答案 1 :(得分:1)

运行时复杂度O(n)

 public static void main(String[] args) {
    List<String> listOfStrings = new ArrayList<>();
    listOfStrings.add("hi");
    listOfStrings.add("hello");
    listOfStrings.add("bye");

    List<String> listOfStringsTwo = new ArrayList<>();

    StringBuilder sb = new StringBuilder();
    for(String str: listOfStrings) {
        sb.append(str).append(" ");
        listOfStringsTwo.add(sb.toString());
    }

    System.out.println(listOfStringsTwo);
}

答案 2 :(得分:1)

所以你有两个选择(我认为你应该扩展现有的ArrayList类 - 开始):

  1. 内存更昂贵,但访问第N个元素的速度更快
  2. 这个内存会占用更多内存,因为您的列表将始终存储所有连接的条目,但也可以让您更快地访问。

    将新元素添加到列表末尾时,只需获取N-1元素并将其与新值连接(N-1将始终包含所有先前的单词)并将其存储在最后。

    1. 花费更多时间&#34;得到&#34;方法,但更容易记忆
    2. 覆盖&#34; get(int index)&#34;方法,并在那里执行整个连接 - 更像是艾哈迈德之前写的。

      对于较小的N值,两种解决方案的工作方式几乎相同。