将对象转换为列表

时间:2018-01-03 22:39:59

标签: android list object casting type-conversion

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

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

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

1 个答案:

答案 0 :(得分:0)

此解决方案仅在objMenus包含List<Restaurant.Menu>具体元素时才有效。

含义,objMenus属于ArrayList<Object>类型,完全没问题,但此ArrayList 的每个元素都必须引用List<Restaurant.Menu> 。< / p>

使用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);
}