首页 > 解决方案 > 将 ArrayList 转换为 ArrayList

问题描述

我在 ArrayAdapter 上设置了通用 ArrayList,它也是一个通用类型适配器。现在,我想转换ArrayList<?>ArrayList<MyClass>. 我已经搜索了很多,但无法弄清楚。谢谢您的帮助。

我有这 2 个通用类型适配器和列表。

private ArrayAdapter<?> GeneralAdapter;
private ArrayList<?> GeneralList;

我在 Listview 上设置这个适配器。并将不同类型的类动态添加到列表中。

GeneralList<State>
GeneralList<District>

设置此列表后,我正在使用 notifydatasetchanged() 更新适配器。

我现在只需要根据需要将此 GeneralList 转换为 ArrayList,ArrayList。我一次添加一个项目,并再次将其用于其他课程,我清除了 generalList,然后将其设置为另一个课程。

标签: javagenericsarraylist

解决方案


使用动态转换可以实现这一点。

如果你想要来自 GeneralList 的状态列表,那么 ->

List<State> states = filter(State.class, GeneralList);

这是你的过滤功能->

static <T> List<T> filter(Class<T> clazz, List<?> items) {
        return items.stream()
                .filter(clazz::isInstance)
                .map(clazz::cast)
                .collect(Collectors.toList());
}

源 -> Java 中的动态转换


推荐阅读