我希望将一个L1 的元素放在另一个L2的前面,但我找不到开箱即用的方式来做到这一点。我不想创建第三个ArrayList,因为L2是视图层中正在使用的List,所以我不想乱搞。据我所知,也没有这样的实用程序方法。java.util.ArrayListjava.util.ArrayListjava.util.Collectionsorg.apache.commons.collections.CollectionUtils
如何最好使用现有API有效地将ArrayList附加到另一个ArrayList?对于Java 7环境。
PS:addAll追加,我想先。
Sla*_*law 10
用途List#addAll(int,Collection):
将指定集合中的所有元素插入此列表中的指定位置(可选操作)。将当前位于该位置的元素(如果有)和任何后续元素右移(增加其索引)。新元素将按照指定集合的迭代器返回的顺序显示在此列表中。如果在操作进行过程中修改了指定的集合,则此操作的行为是不确定的。(请注意,如果指定的集合是此列表,并且是非空的,则将发生这种情况。)
如果您将其0用作索引,则会将给定添加Collection到之前List。例如:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
list1.add("Item #1");
list1.add("Item #2");
list2.add("Item #3");
list2.add("Item #4");
System.out.println("List #1: " + list1);
System.out.println("List #2: " + list2);
list2.addAll(0, list1);
System.out.println("Combined List: " + list2);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
list1.add("Item #1");
list1.add("Item #2");
list2.add("Item #3");
list2.add("Item #4");
System.out.println("List #1: " + list1);
System.out.println("List #2: " + list2);
list2.addAll(0, list1);
System.out.println("Combined List: " + list2);
}
}
Run Code Online (Sandbox Code Playgroud)
subList给您一个列表视图。如果您在列表的最开始处进行查看,addAll将做正确的事。
ArrayList<String> list = new ArrayList<String>(Arrays.asList("extant1", "extant2"));
ArrayList<String> prefix = new ArrayList<String>(Arrays.asList("prefix1", "prefix2"));
list.subList(0, 0).addAll(prefix);
list
// => list ==> [prefix1, prefix2, extant1, extant2]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |