![](/img/trans.png)
[英]How to make combination from values of of LinkedHashMap<String, ArrayList<ArrayList>>
[英]Extracting map values as ArrayList from LinkedHashMap
我创建了一个简单的MapExtension
类,以适应将4个值传递给MapExtension
适配器,并使用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返回Collections
提取ArrayList<MapExtension>
,都会从不同的试验中得到这些错误(在注释中):
ListViewAdapter(Context context, LinkedHashMap<Integer, ArrayList<MapExtension>> mValues) {
super(context, R.layout.listview_layout, mValues.keySet().toArray());
this.context = context;
//java.lang.ClassCastException: java.util.HashMap$Values
//cannot be cast to java.util.ArrayList
ArrayList mValues = (ArrayList) mValues.values();
// says incompatible as it will become ArrayList<ArrayList<MapExtension>>
ArrayList<MapExtension> mValues = new ArrayList<>(mValues.values());
}
如何成功检索它并将其放入兼容类型?
提前致谢。
mValues
每个value
都是一个ArrayList<MapExtensions>
,并且values
返回Collection<V>
,因此您应该可以这样做。
Collection<ArrayList<MapExtensions>> localVar = mValues.values();
如果要展平嵌套数组,可以查看流flatMap()方法。 这是一个人的博客 。 顺便说一句,Kotlin集合具有可用于集合的flatMap()扩展方法。
如果我正确地理解了您,给定LinkedHashMap<Integer, ArrayList<MapExtension>> mValues
,您希望ArrayList<MapExtension>
平输入地图的值。 使用Java 8,您可以轻松地做到这一点:
ArrayList<MapExtension> extensions = mValues .values() .stream() .collect(ArrayList::new, ArrayList::addAll, ArrayList::addAll);
一个小提示:您应该针对接口进行编程,因此不要在类型中使用ArrayList
,而应考虑使用List
这样您就不会在任何地方都受一个特定的具体实现约束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.