我的ViewValue类定义如下:
class ViewValue {
private Long id;
private Integer value;
private String description;
private View view;
private Double defaultFeeRate;
// getters and setters for all properties
}
在我的代码中,我需要将ViewValue实例列表转换为包含来自相应ViewValue的id字段值的列表。
我用foreach循环来做:
List<Long> toIdsList(List<ViewValue> viewValues) {
List<Long> ids = new ArrayList<Long>();
for (ViewValue viewValue : viewValues) {
ids.add(viewValue.getId());
}
return ids;
}
有没有更好的方法来解决这个问题?
编辑:此答案基于以下想法:您需要对代码中其他位置的不同实体和不同属性执行类似的操作。如果您 只需
要按ID将ViewValues列表转换为Longs列表,则请坚持使用原始代码。但是,如果您想要更可重用的解决方案,请继续阅读…
我会为投影声明一个接口,例如
public interface Function<Arg,Result>
{
public Result apply(Arg arg);
}
然后,您可以编写一个通用转换方法:
public <Source, Result> List<Result> convertAll(List<Source> source,
Function<Source, Result> projection)
{
ArrayList<Result> results = new ArrayList<Result>();
for (Source element : source)
{
results.add(projection.apply(element));
}
return results;
}
然后您可以定义简单的投影,如下所示:
private static final Function<ViewValue, Long> ID_PROJECTION =
new Function<ViewValue, Long>()
{
public Long apply(ViewValue x)
{
return x.getId();
}
};
并像这样应用它:
List<Long> ids = convertAll(values, ID_PROJECTION);
(显然,使用K&R支撑和更长的行会使投影声明更短:)
坦率地说,所有这些对于lambda表达式都会更好,但是没关系…
当遍历ACROD时,有一个列表,并希望将该列表中的第一个对象映射到我的域对象。 @mapping(source=“insurancesvcrqs[0].policyquoteinqrqsaddrqsandpolicyquoteinqrqs[0].productues[0].generalpartyinfo.nameinfos[0].commlname.commericalname”,target=
问题内容: 我需要使用特定对象的属性(位置)对对象(学生)列表进行分组,代码如下所示, 请给我建议一个干净的方法。 问题答案: In Java 8:
我正在创建词汇表,一个GUI程序来管理未知单词。我得到: /usr/bin/python3。5/主页/cali/Pycharm项目/词汇表/词汇表。Tkinter回调回溯中的py异常(最近一次调用最后一次): 文件“/usr/lib/python3.5/Tkinter/init.py”,第1553行,在调用返回self中。func(*args)文件“/home/cali/PycharmProjec
当我尝试运行代码时,select元素出现问题。它会给我一个错误 就像我没有任何选择元素一样。是因为它没有关注弹出窗口吗?我做错了什么? MyCode.py select.py中的错误: 例外情况:
问题内容: 我正在尝试读取文件,并用逗号在每行中拆分一个单元格,然后仅显示包含有关纬度和经度信息的第一和第二个单元格。这是文件: 时间, 纬度,经度 ,类型2015-03-20T10:20:35.890Z, 38.8221664,-122.7649994 ,地震 2015-03-20T10 :18:13.070Z, 33.2073333,-116.6891667 ,地震 2015-03-20T10
我试图分裂链接的图像是什么错在我的代码