我在Java中有一个HashMaps的ArrayList,我想将它附加到另一个类似的列表中, 有没有办法做到这一点,以便生成的数组列表保留订单。
例如:
List<Map<String, String>> list1 = new ArrayList<HashMap<String, String>>();
List<Map<String, String>> list1 = new ArrayList<HashMap<String, String>>();
list1.add(hm1);
list1.add(hm2);
list1.add(hm3);
list2.add(hm4);
list2.add(hm5);
list2.add(hm6);
我想要的新列表是:
//list 3 = list1 + list2;
list3 = {hm1, hm2, hm3, hm4, hm5, hm6};
怎么做?
答案 0 :(得分:5)
您可以在Java 8中轻松完成
List<HashMap<String, String>> newList = Stream.concat(listOne.stream(),
listTwo.stream()).collect(Collectors.toList());
或者在Java 7及更低版本中
List<HashMap<String, String>> newList = new ArrayList<>(list1.size() + list2.size());
newList.addAll(listOne);
newList.addAll(listTwo);
但是,您应该注意可能由对两个列表的重复引用引起的内存泄漏,请查看this answer以获取更多信息。
答案 1 :(得分:1)
只需使用List.addAll())
方法:
@Test
public void testConcat() {
List<String> list1 = new ArrayList<String>();
list1.add("A");
list1.add("B");
list1.add("C");
List<String> list2 = new ArrayList<String>();
list1.add("D");
list1.add("E");
list1.addAll(list2);
assertThat(list1).containsExactly("A","B","C","D","E");
}
答案 2 :(得分:0)
你可以做到
List<HashMap<String, String>> list3 = new ArrayList<>(list1);
list3.addAll(list2);
答案 3 :(得分:0)
使用它addAll将指定集合中的所有元素插入此列表
ArrayList<HashMap<String, String>> list3 = new ArrayList<HashMap<String, String>>();
list3.addAll(list1);
list3.addAll(list2);