【发布时间】:2015-02-05 21:48:13
【问题描述】:
堆栈溢出。
我正在尝试将 ArrayList 中的每个单词中的 4 个添加到 ArrayList 本身中。我的 ArrayList 中有两个字符串。一个是“java”,另一个是“程序”。我正在尝试编写一个程序,每个单词总共添加 4 个单词。例如:我正在尝试添加 4 x java 和 4 x 程序。
这是我到目前为止所得到的。我不知道,我做错了什么。 任何帮助或提示将不胜感激。
/*
* Write a method called quadList that takes an ArrayList of strings as a parameter
* and replaces every string with four of that same string.
* For example, if the list stores the values ["java", "program"]
* before the method is called,it should store the values
* ["java ", " java ", " java ", " java ", "program", "program", "program", "program"]
* after the method finishes executing.
*/
import java.util.ArrayList;
public class Ex10_4_quadList {
public static void main(String[] args) {
ArrayList<String> arrList = new ArrayList<String>();
arrList.add("Java");
arrList.add("Program");
System.out.println("Before: " + arrList);
quadList(arrList);
System.out.println("after " + arrList);
}
private static void quadList(ArrayList<String> list) {
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < 4; j++) {
String temp = list.get(i);
list.add(temp);
}
}
}
}
这里是固定代码:
public class Ex10_4_quadList {
public static void main(String[] args) {
ArrayList<String> arrList = new ArrayList<String>();
arrList.add("Java");
arrList.add("Program");
System.out.println("Before: " + arrList);
quadList(arrList);
Collections.sort(arrList);
System.out.println("after " + arrList);
}
private static void quadList(ArrayList<String> list) {
int initial = list.size();
for (int i = 0; i < initial; i++) {
for (int j = 0; j < 3; j++) {
String temp = list.get(i);
list.add(temp);
}
}
}
}
【问题讨论】:
-
在你的 for 循环中,你正在检查这个
i < list.size()。由于您在循环中将项目添加到列表中,因此它将在迭代中发生变化。您可能要考虑在循环之前执行int initial = list.size();并将检查条件更改为'i add(int index, E element)
标签: java arraylist duplicates add