java:将对象添加到新的ArrayList而无需参数化列表

时间:2012-01-23 11:56:49

标签: java arrays list arraylist parameterized

我需要将对象添加到新的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);

谢谢,

2 个答案:

答案 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允许您为此函数指定可变数量的参数。泛型类型允许捕获参数的类型,并返回相应类型的列表。