堆栈溢出。
我正在尝试将 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);
}
}
}
}
最佳答案
理想情况下,您可以使用 foreach 样式的循环,而不是使用索引进行迭代。然而,这意味着您无法在迭代时更改列表。因此,您需要将成员添加到新列表中,然后添加所有成员:
List<String> duplicates = new ArrayList<>();
for (String member: list) {
for (int i = 0; i < 4; i++) {
duplicates.add(member);
}
}
list.addAll(duplicates);
如果您使用 Java 8,因此可以访问流,则可以使用许多快捷方式:
list.addAll(list.stream()
.flatMap(m -> Stream.generate(() -> m).limit(4))
.collect(Collectors.toList());
这段代码表示,对于列表中的每个成员,将其转换为该项目的 4 个副本,然后将所有这些副本收集为一个列表,并将它们添加到原始列表中。
关于java - 将重复值添加到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28354708/