在Java中按特定顺序查询ArrayLists

时间:2015-10-21 10:52:46

标签: java list

我在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};

怎么做?

4 个答案:

答案 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);