Поддерживает ли библиотека ModelMapper такие коллекции, как ArrayList или HashSet? - PullRequest
27 голосов
/ 26 августа 2011

Этот вопрос не относится к AutoMapper.Мой вопрос о ModelMapper в java, однако я не могу создать новый тег для modelmapper как моя маленькая репутация.Извините за путаницу.

В любом случае, мой вопрос в том, поддерживает ли библиотека modelmapper такие коллекции, как arraylist или hashset?Кажется, не поддерживается сопоставление коллекции с коллекцией.Это правда?

Ответы [ 4 ]

53 голосов
/ 29 июля 2013

Вы также можете отобразить коллекции () напрямую:

    List<Person> persons = getPersons();
    // Define the target type
    java.lang.reflect.Type targetListType = new TypeToken<List<PersonDTO>>() {}.getType();
    List<PersonDTO> personDTOs = mapper.map(persons, targetListType);

Документация по картографированию Общие сведения .

4 голосов
/ 19 января 2017

Вы также можете избежать вещей TypeToken, если работаете с массивами:

  List<PropertyDefinition<?>> list = ngbaFactory.convertStandardDefinitions(props);
  ModelMapper modelMapper = new ModelMapper();
  PropertyDefinitionDto[] asArray = modelMapper.map(list, PropertyDefinitionDto[].class);
4 голосов
/ 25 июля 2012

Да - поддерживается сопоставление коллекции с коллекцией. Пример:

static class SList {
    List<Integer> name;
}

static class DList {
    List<String> name;
}

public void shouldMapListToListOfDifferentTypes() {
    SList list = new SList();
    list.name = Arrays.asList(Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3));
    DList d = modelMapper.map(list, DList.class);

    assertEquals(d.name, Arrays.asList("1", "2", "3"));
}
1 голос
/ 22 марта 2019

Или с Java 8:

List<Target> targetList =
    sourceList
        .stream()
        .map(source -> modelMapper.map(source, Target.class))
        .collect(Collectors.toList());
...