Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在特定索引处的其他列表中插入列表/数组_Java_Arrays_String - Fatal编程技术网

Java 在特定索引处的其他列表中插入列表/数组

Java 在特定索引处的其他列表中插入列表/数组,java,arrays,string,Java,Arrays,String,到现在为止,我尝试了很多事情,但都不能真正解决我的问题。 我得到了一个包含一些字符串的字符串列表,以及另一个包含一些其他字符串的字符串列表/数组。现在我想在第一个列表中的特定位置插入第二个列表。这里有一个小例子(带问题的佩斯多克): 列表列表1//包含,例如,“你好”,“关键字”,“再见” String[]stringarray=新字符串[]{“Blah1”、“Blah2”、“Blah3”}; for(字符串s:list1){ 如果包含(“关键字”){ //在这里,我需要一种方法,将列表项中的“

到现在为止,我尝试了很多事情,但都不能真正解决我的问题。 我得到了一个包含一些字符串的字符串列表,以及另一个包含一些其他字符串的字符串列表/数组。现在我想在第一个列表中的特定位置插入第二个列表。这里有一个小例子(带问题的佩斯多克):

列表列表1//包含,例如,“你好”,“关键字”,“再见”
String[]stringarray=新字符串[]{“Blah1”、“Blah2”、“Blah3”};
for(字符串s:list1){
如果包含(“关键字”){
//在这里,我需要一种方法,将列表项中的“关键字”替换为整个其他列表,这样最终的列表将如下所示:“Hello”、“Blah1”、“Blah2”、“Blah3”、“Bye”
list1.set(list1.indexOf(s),stringarray);//这样的方法太不可思议了
}
}

我怎样才能解决我的问题?

也许是这样的

    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);
    }
String[]stringArray=新字符串[]{“Blah1”、“Blah2”、“Blah3”};
List arrayAsList=Arrays.asList(stringArray);
List original=新的ArrayList();
//填充原始
如果(原始。包含(“关键字”){
original.addAll(original.indexOf(“关键字”),arrayAsList);
}
请使用:

boolean addAll(int index,Collection<? extends E> c)
boolean addAll(int-index,Collection查看,您需要以下方法:

public boolean addAll(int index,
             Collection<? extends E> c)
编辑

我误解了你的问题,但想法仍然是一样的。如果你想用包含关键字的每个单词替换所有元素,只需执行以下操作:

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);
for(int i=0;i
为什么不直接使用
列表1.contains(“关键字”)
而不是for循环?不清楚您在问什么,因为您正在尝试将字符串数组添加到
列表中我需要。。“为了怜悯而停止叫喊。请编辑你的帖子,等我的头痛缓解后,我也许可以阅读这些评论。@ZouZou-OP想在列表中找到一个包含关键字作为子字符串的元素,而不是(必要的)子字符串。”等于关键字。@TedHopp是的,你是对的,显然需要一个for循环。这个例子有误导性。我将你的帖子回滚到第1版,因为谷歌新年动画有点分散注意力,与你的答案无关。我想OP想替换一个元素(所有元素?)它包含关键字,可能是一个子字符串。这与您所做的不同,即替换与关键字相等的第一个元素(如果有)。@TedHopp哦,您说得对。我相应地更新了答案。
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);