首页 > 解决方案 > 如何在java中的通用列表中添加两个相同类型的项目列表

问题描述

我有一种方法可以接受List<?>我想要两个列表我想在单个泛型列表中添加两个列表但我无法添加我试图创建一个泛型类型列表但它不接受。

我试过这个:

List<Object> list = new ArrayList<>();
list.add(model.getfirstlist().getItems());                      
list.add(model.getSecondlist().getItems());
setListData(list)

我的功能是:

public void setListData(List<?> list) {
       // print list
}

getItems 具有相同的字段 ID、标题

setListData(model.getfirstlist().getItems())// 工作正常

我的功能就像

public void setListData(List<?> list) {
       // print list
}

我正在尝试在单个列表中添加两个列表并将其传递给

singlelist = ( model.getfirstlist().getItems() +
model.getSecondlist().getItems())
setListData(singlelist);

请建议我如何做到这一点。

标签: java

解决方案


您可以创建一个List包含两个列表的元素:

例如

List<Integer> listA = Arrays.asList(1,2,3,4,5);
List<Integer> listB = Arrays.asList(6,7,8,9);

List<List<Integer>> lists = Arrays.asList(listA, listB);

然后使用流 api,您可以展平您创建的列表,请尝试以下操作:

List<Object> flattenList = Stream.of(lists)
                                 .flatMap(x -> x.stream())
                                 .collect(Collectors.toList());

如果您不能使用流 api,您可以尝试以下方法:

List<Integer> listA = Arrays.asList(1,2,3,4,5);
List<Integer> listB = Arrays.asList(6,7,8,9);

listA.addAll(listB);

现在listA也将包含 的项目listB


推荐阅读