Java: добавить объект в новый ArrayList без необходимости параметризации списка - PullRequest
1 голос
/ 23 января 2012

Мне нужно добавить объект в новый 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 голосов
/ 23 января 2012

Вы по-прежнему можете использовать следующий синтаксис:

List<MyObject> initList = new ArrayList<MyObject>() {{ add(mo); }}

Или, используя Google Guava , вы можете использовать Lists.newArrayList(mo).

Вам следует рассмотреть возможность использования MultiMap за то, что вы пытаетесь достичь (карта, значения которой являются списками).Обратите внимание, что Apache Common также имеет реализацию MultiMap , вы также можете взглянуть на класс DefaultsMap .

0 голосов
/ 23 января 2012

Если вы используете опцию google-guava, вы можете сделать Lists.newArrayList(mo).

Документация доступна на странице google-guava API для списков .

* 1007.* РЕДАКТИРОВАТЬ Не гугл-гуава вариант:

Если гугл-гуава не вариант, вы можете реализовать его самостоятельно так:

public static <T> List<T> newArrayList(T... a) {
    return new ArrayList<T>(Arrays.asList(a));
}     

Это использует комбинациюvarargs и обобщений для создания списка массивов.Varargs позволяет вам указать переменное количество параметров для этой функции.Универсальный тип позволяет собирать параметры типа и возвращать список соответствующего типа.

...