Java 从LinkedHashMap中提取作为ArrayList的映射值

Java 从LinkedHashMap中提取作为ArrayList的映射值,java,android,listview,arraylist,collections,Java,Android,Listview,Arraylist,Collections,我创建了一个简单的类MapExtension,用于将4个值传递给listview适配器,并使用LinkedHashmap添加MapExtension的ArrayList public class MapExtension { private String studname; private String studnumber; private String schedule; public MapExtension(String studname, String studnumber, St

我创建了一个简单的类
MapExtension
,用于将4个值传递给listview适配器,并使用
LinkedHashmap
添加MapExtension的ArrayList

public class MapExtension {
private String studname;
private String studnumber;
private String schedule;


public MapExtension(String studname, String studnumber, String schedule) {
    this.studname = studname;
    this.studnumber= studnumber;
    this.schedule= schedule;
}

public String getStudname () {
    return studname;
}

public String getStudnumber() {
    return studnumber;
}

public String getSchedule() {
    return schedule;
}
}

每当我试图从LinkedHashMap中提取
ArrayList
,返回
Collections
,我都会从不同的试验中得到这些错误(在注释中):

ListViewAdapter(上下文、LinkedHashMap mValues){
super(context,R.layout.listview_layout,mValues.keySet().toArray());
this.context=上下文;
//java.lang.ClassCastException:java.util.HashMap$值
//无法强制转换为java.util.ArrayList
ArrayList mValues=(ArrayList)mValues.values();
//表示不兼容,因为它将成为ArrayList
ArrayList mValues=新的ArrayList(mValues.values());
}
如何成功检索它并将其放入兼容类型


提前感谢。

每个
mValues
值都是
数组列表
,并且
返回一个
集合
,因此您应该能够这样做

Collection<ArrayList<MapExtensions>> localVar = mValues.values();

收藏。顺便说一句,Kotlin集合有一个flatMap()扩展方法,可用于集合。

如果我正确理解您,给定
LinkedHashMap mValues
,您希望
ArrayList
展平输入映射的值。使用Java 8,您可以轻松地执行以下操作:

ArrayList extensions=mValues
.values()
.stream()
.collect(ArrayList::new,ArrayList::addAll,ArrayList::addAll)


一个小提示:您应该针对接口编程,因此不要在您的类型中使用
ArrayList
,而是考虑使用
List
,这样您就不必处处依赖于某个特定的具体实现

如果SO使用
List
可能会更好,那么
flapMap(List::stream)
是否比
collector(Collectors.toList())
更好?是的,在这种情况下会更简单。感谢您的提示。通过使用该代码,我将API的
用法记录为@since 1.8+
,并且as只允许我使用1.7。这导致我将API的
用法记录为@since 1.8+
。我还不能让它工作,因为Android Studio不允许我使用1.8版,但只能在1.7版之前使用。
Collection<ArrayList<MapExtensions>> localVar = mValues.values();