我有一个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并且陷入了困境。
答案 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类 - 开始):
这个内存会占用更多内存,因为您的列表将始终存储所有连接的条目,但也可以让您更快地访问。
将新元素添加到列表末尾时,只需获取N-1元素并将其与新值连接(N-1将始终包含所有先前的单词)并将其存储在最后。
覆盖&#34; get(int index)&#34;方法,并在那里执行整个连接 - 更像是艾哈迈德之前写的。
对于较小的N值,两种解决方案的工作方式几乎相同。