Java 是否有API将列表中的一系列值替换为另一个列表?

Java 是否有API将列表中的一系列值替换为另一个列表?,java,list,collections,Java,List,Collections,我有一个当前列表,我希望通过用另一个列表替换一系列元素来更新该列表,例如: 当前列表: a, b, c, d, e, f, g 新列表: x, y, z 我想做以下类似的事情: CurrentList.setAll(5, NewList) 它应将CurrentList转换为以下值: a, b, c, d, e, x, y, z 因此,它将f,g元素替换为x,y,并且添加了CurrentList一个额外的z 编辑:这并不总是在列表的末尾。这不仅仅是关于字符串。这是一个包含任何类型元素的列表

我有一个当前列表,我希望通过用另一个列表替换一系列元素来更新该列表,例如:

当前列表:

a, b, c, d, e, f, g
新列表:

x, y, z
我想做以下类似的事情:

CurrentList.setAll(5, NewList)
它应将
CurrentList
转换为以下值:

a, b, c, d, e, x, y, z
因此,它将
f,g
元素替换为
x,y
,并且
添加了
CurrentList
一个额外的
z


编辑:这并不总是在列表的末尾。这不仅仅是关于字符串。这是一个包含任何类型元素的列表。这需要处理列表的任何部分。例如,我可能需要更换
b、c、d
。我只是有了起始索引,然后我必须继续替换元素,如果列表空间不足,则将
添加到列表中,而不是替换。

如果有字母集合,最好使用StringBuilder

StringBuilder sb = new StringBuilder("abcdefg");
sb.replace(5, sb.length(), "xyz");
如果你有一个元素列表,你可以

List<String> list = ...
List<String> subList = list.subList(5, list.size());
subList.clear();
subList.addAll(Arrays.asList("x", "y", "z"));
List=。。。
List subList=List.subList(5,List.size());
subList.clear();
addAll(Arrays.asList(“x”、“y”、“z”));

如果您有一组字母,最好使用StringBuilder

StringBuilder sb = new StringBuilder("abcdefg");
sb.replace(5, sb.length(), "xyz");
如果你有一个元素列表,你可以

List<String> list = ...
List<String> subList = list.subList(5, list.size());
subList.clear();
subList.addAll(Arrays.asList("x", "y", "z"));
List=。。。
List subList=List.subList(5,List.size());
subList.clear();
addAll(Arrays.asList(“x”、“y”、“z”));

您要找的是:

List<?> list = ...  // original list
List<?> toReplace = list.subList(startingIndex, endIndex);
toReplace.clear(); // clears the subList
List<?> replacement = ... // list of new elements
toReplace.addAll(replacement); // inserts the new elements in the original list, through the sublist
List=…//原始列表
List toReplace=List.subList(起始索引、结束索引);
toReplace.clear();//清除子列表
列表替换=…//新元素清单
toReplace.addAll(替换);//通过子列表在原始列表中插入新元素

您还可以逐个添加新元素。支持列表将根据需要扩大。

您需要的是:

List<?> list = ...  // original list
List<?> toReplace = list.subList(startingIndex, endIndex);
toReplace.clear(); // clears the subList
List<?> replacement = ... // list of new elements
toReplace.addAll(replacement); // inserts the new elements in the original list, through the sublist
List=…//原始列表
List toReplace=List.subList(起始索引、结束索引);
toReplace.clear();//清除子列表
列表替换=…//新元素清单
toReplace.addAll(替换);//通过子列表在原始列表中插入新元素

您还可以逐个添加新元素。支持列表的大小将根据需要增加。

@durron597这与OP的要求相同,但更接近OP的要求。如果您保留对子列表的引用,并在clear()之后添加到子列表中,则当范围不在列表末尾时,它甚至会起作用。如果我不够清楚,我很抱歉。这个列表不仅仅是关于字符串的,它可以包含任何类型的元素。感谢您提供的解决方案,但这仅在我在列表末尾添加\替换的情况下才有效,这可能并不总是如此。我需要能够替换目标列表的任何部分,不管是在中间还是结束,不管它还有多少大小。再次感谢。@MuhammadGelbana bowmore建议了解决方案,我也包括了。@PeterLawrey,您的解决方案假设包含新元素s的列表将超过或满足原始列表的最后一个元素。我在一条语句中询问,我是否可以替换列表的元素,从索引开始,在设置新列表的最后一个元素时停止,并仅在需要时增加原始列表的大小。@durron597这与OP的要求相同,但更接近OP的要求。如果保留对子列表的引用,并在clear()之后添加到它,当范围不在列表末尾时,它甚至可以工作。如果我不够清楚,我很抱歉。这个列表不仅仅是关于字符串的,它可以包含任何类型的元素。感谢您提供的解决方案,但这仅在我在列表末尾添加\替换的情况下才有效,这可能并不总是如此。我需要能够替换目标列表的任何部分,不管是在中间还是结束,不管它还有多少大小。再次感谢。@MuhammadGelbana bowmore建议了解决方案,我也包括了。@PeterLawrey,您的解决方案假设包含新元素s的列表将超过或满足原始列表的最后一个元素。在一个语句中,我询问是否可以替换列表的元素,从索引开始,在设置新列表的最后一个元素时停止,并仅在需要时增加原始列表的大小。但这假设
endIndex
永远不会超过原始列表的大小。我想问的是,通过提供
startingIndex
和包含要替换的元素的列表,是否可以在一个语句中实现这一点。它并不假设endIndex是要替换的子列表的结束索引。生成的子列表也可以根据需要进行收缩和增长。我不认为这可以在列表的“一句话”中完成,但这假设
endIndex
永远不会超过原始列表的大小。我想问的是,通过提供
startingIndex
和包含要替换的元素的列表,是否可以在一个语句中实现这一点。它并不假设endIndex是要替换的子列表的结束索引。生成的子列表也可以根据需要进行收缩和增长。我不认为这可以通过列表API“在一条语句中”实现