Модель:
public class MyModel{
private int id;
private String name;
....
....
//getters and setters
}
У меня есть список MyModel
объекта:
//First Object to be added to list
MyModel myModelObject1 = new MyModel();
myModelObject1.setId(1);
myModelObject1.setName("abc");
//Second Object to be added to list
MyModel myModelObject2 = new MyModel();
myModelObject1.setId(2);
myModelObject1.setName("pqr");
List<MyModel> myModelList = new ArrayList<MyModel>();
myModelList.add(myModelObject1);
myModelList.add(myModelObject2);
Я хочу получить список имен, присутствующих в списке MyModel
, т.е.Я хочу создать список имен (List<String>
в данном случае) из myModelList
.Итак, я хочу, чтобы мой список имел:
{"abc", "pqr"}
Всегда есть способ выполнить итерацию и создать другой список, но есть ли лучший способ сделать это?(Не обязательно быть эффективным, но если это можно сделать в строке с использованием потоков, foreach и т. Д.).
РЕДАКТИРОВАТЬ: ответы сработали для меня, но у меня есть некоторые изменения в моем случае использования: если я хочу добавитьусловие, что только имя, которое содержит символ 'a', должно быть добавлено в список, и я хочу добавить сообщение журнала для отладки для каждого элемента, тогда как мне подходить к этому?
Я попытался сделать следующее, используяметод (charAPresent()
), который проверяет, что если переданная строка содержит символ «а», но он не работает:
List<String> modelNameList = myModelList.stream()
.map(model -> {
if (charAPresent(model.getName)) {
model.getName()
}
})
.collect(Collectors.toList());
Дайте мне знать, если я что-то упустил.