型号:
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()
)执行以下操作,该方法检查传递的字符串是否包含字符“a”,但它不起作用:
List<String> modelNameList = myModelList.stream()
.map(model -> {
if (charAPresent(model.getName)) {
model.getName()
}
})
.collect(Collectors.toList());
如果我遗漏了什么,请告诉我。
最佳答案
使用 Java 8 流:
List<String> modelNameList = myModelList.stream()
.map(Model::getName)
.collect(Collectors.toList());
Model::getName
被称为 method reference 。它相当于 model -> model.getName()
关于java - 从另一个对象列表创建对象元素的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56553521/