是否有API用另一个列表替换列表中的一系列值?
我有希望通过用另一列表替换元素的范围,例如以更新的最新列表:是否有API用另一个列表替换列表中的一系列值?
CurrentList:
a, b, c, d, e, f, g
NewList:
x, y, z
我想做类似如下的事:
CurrentList.setAll(5, NewList)
这要转变CurrentList
有以下值:
a, b, c, d, e, x, y, z
所以通过x, y
取代f, g
元素,也added
的CurrentList
额外的新z
。
编辑:这并不总是在列表的末尾。它不仅是关于弦乐。这是关于具有任何类型元素的列表。这需要在列表的任何部分工作。例如,我可能需要更换b, c, d
。我只是拥有起始索引,然后我必须先替换元素,并且如果列表空间不足,则会列出add
而不是替换。
你所要寻找的是这样的:
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
您还可以逐个添加新元素。支持列表将根据需要逐渐增大。
如果你有书信集,你最好使用一个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.subList(5,list.size())。clear();'? – durron597
@煞车感谢您的固定错字。 –
@ durron597这是一样的事情,但更接近OP所要求的。 –
,但是这里假定'endIndex'永远不会超过原始列表的大小。我问是否可以通过提供'startsIndex'和列表中要替换的元素在一个语句中完成。 –
它不假定,endIndex是* subList的结束索引来替换*。生成的subList将能够根据需要收缩和增长。我不认为这可以通过List API在'一个声明'中完成 – bowmore