将对象转换为列表

问题描述 投票:0回答:1

我找不到有效的方法。你可以帮忙吗?

private List<List<Restaurant.Menu>> menus = new ArrayList<>();

ArrayList<Object> objMenus = new ArrayList<>();

for(int i = 0; i < menus.size(); i++)
{
     objMenus.add(menus.get(i));
}
tinydb.putObject("menus",objMenus);

tinydb支持Listobject和object。我将此值存储为对象。现在,我想再次将此对象转换为List<List<Restaurant.Menu>>

private List<List<Restaurant.Menu>> menus = new ArrayList<>();

ArrayList<Object> objMenus = new ArrayList<>();

objMenus.add(tinydb.getObject("menus", Object.class));

menus = ? convert objMenus

我尝试了几种方法,但效率不高。有什么建议吗?提前致谢。

android list object casting type-conversion
1个回答
0
投票

只有当objMenus包含List<Restaurant.Menu>的具体元素时,此解决方案才有效。

意思是,objMenusArrayList<Object>类型,它完全没问题,但这个ArrayList的每个元素都必须引用List<Restaurant.Menu>

使用Streams API:

List<List<Restaurant.Menu>> menus = 
           objMenus.stream()
                   .map(e -> (List<Restaurant.Menu>) e)
                   .collect(toList());

使用命令式方法:

List<List<Restaurant.Menu>> menus = new ArrayList<>();
for (Object list : objMenus) {
     menus.add((List<Restaurant.Menu>)list);
}
© www.soinside.com 2019 - 2024. All rights reserved.