我现在尝试了很多东西,但无法真正解决我的问题。 我有一个包含一些字符串的String-List,另一个包含其他字符串的String-List / Array。现在我想在第一个列表中的特定位置插入第二个列表。这里有一个小例子(带有问题的Peusdocode):
List<String> list1; //Contains, for example, "Hello", "Keyword", "Bye"
String[] stringarray = new String[]{"Blah1", "Blah2", "Blah3"};
for(String s : list1){
if(s.contains("Keyword"){
//here i need a method to replace the list item with "keyword" in it with the whole other list, so that the final list will look like this: "Hello", "Blah1", "Blah2", Blah3", "Bye"
list1.set(list1.indexOf(s), stringarray); // such a method would be incredible
}
}
如何解决我的问题?
答案 0 :(得分:3)
查看doc,您需要以下方法:
public boolean addAll(int index,
Collection<? extends E> c)
将指定集合中的所有元素插入到此中 列表,从指定位置开始。目前转移元素 在该位置(如果有的话)和右边的任何后续元素 (增加他们的指数)。新元素将显示在列表中 它们由指定集合返回的顺序 迭代器。
所以我会做这样的事情:
List<String> list1 = new ArrayList<>(Arrays.asList("Hello", "Keyword", "Bye"));
String[] stringarray = new String[]{"Blah1", "Blah2", "Blah3"};
int index = list1.indexOf("Keyword"); //get the index of the keyword
if(index != -1){ //if it's different than -1, it means that the list contains the keyword
list1.remove(index); //remove the keyword from the list
list1.addAll(index, Arrays.asList(stringarray)); //insert the array in the list at the position where keyword was
}
System.out.println(list1);
输出:
[Hello, Blah1, Blah2, Blah3, Bye]
编辑:
我误解了你的问题,但这个想法仍然是一样的。如果你想用包含关键字的每个单词替换所有元素,只需执行:
for(int i = 0; i < list1.size(); i++) {
if(list1.get(i).contains("Keyword")){
list1.remove(i);
list1.addAll(i, Arrays.asList(stringarray));
}
}
System.out.println(list1);
答案 1 :(得分:2)
也许是这样的?
String[] stringArray = new String[]{"Blah1", "Blah2", "Blah3"};
List<String> arrayAsList = Arrays.asList(stringArray);
List<String> original = new ArrayList<>();
//Populate original
if(original.contains("Keyword"){
original.addAll(original.indexOf("Keyword"), arrayAsList);
}
答案 2 :(得分:1)