我需要将对象添加到新的ArrayList:
private Map<String,List<MyObject>> populateMapFromList2(List<MyObject> dataSourceList){
Map<String,List<MyObject>> moMap = new HashMap<String, List<MyObject>>();
for (MyObject mo : dataSourceList){
String firstLetter = (mo.getName().substring(0,1)).toUpperCase();
if (!moMap.containsKey(firstLetter)) {
moMap.put(firstLetter,new ArrayList<MyObject>());
}
moMap.get(firstLetter).add(mo);
}
return moMap;
}
:new ArrayList<MyObject>()
我想添加mo
喜欢:new ArrayList<DataSource>().add(mo)
但它是一个布尔值(Go图)。
还有另一种方法可以第一次为非参数化列表增加价值吗?
或唯一的方法是这个?
List<MyObject> initList = new ArrayList<MyObject>();
initList.add(mo);
moMap.put(firstLetter,initList);
谢谢,
答案 0 :(得分:0)
您仍然可以使用以下语法:
List<MyObject> initList = new ArrayList<MyObject>() {{ add(mo); }}
或使用 Google Guava ,您可以使用Lists.newArrayList(mo)
。
您应该考虑使用MultiMap来实现您想要实现的目标(值为列表的地图)。请注意,Apache Common也有MultiMap实现,您也可以查看DefaultedMap类。
答案 1 :(得分:-1)
如果使用google-guava是一个选项,您可以执行Lists.newArrayList(mo)
。
文档可在google-guava API page for Lists上找到。
编辑非google-guava选项:
如果谷歌番石榴不是一个选项,你可以自己实现它:
public static <T> List<T> newArrayList(T... a) {
return new ArrayList<T>(Arrays.asList(a));
}
这使用varargs和泛型的组合来创建数组列表。 Varargs允许您为此函数指定可变数量的参数。泛型类型允许捕获参数的类型,并返回相应类型的列表。