java - java中的ArrayList操作
问题描述
Arraylist<Books> booksdtoList=new ArrayList<>();
List<Object[]> modelList =null;
modellist=repostory.getbooks("FICTION");
booksdtoList =mapdto(booksdtoList,modellist);
modellist=repostory.getbooks("COMIC");
booksdtoList =mapdto(booksdtoList,modellist);
Arraylist<Books> booksdtoList mapDto(Arraylist<Books> booksdtoList, List<Object[]> modelList){
Books books=null;
for (model:modelList){
books=new Books((String)model[0],(String)model[1]));
booksdtoList.add(books);
}
return booksdtoList;
}
将booksdtoList
包含所有书籍列表还是会覆盖列表中的任何对象?
将 ArrayList 作为参数发送并添加是最佳做法吗?如果没有,请推荐最好的一个。
解决方案
我不能说什么是最佳实践,但如果在调用它之前总是期望它为空,我可能会在映射方法中实例化 List:
List<Books> mapDTO(List<Object[]> modelList) {
List<Books> booksDTOList = new ArrayList<>();
Books books = null;
for (Object[] model : modelList){
books = new Books((String)model[0], (String)model[1]);
booksDTOList.add(books);
}
return booksDTOList;
}
另请注意,最好对对象使用 List 接口。
从多个呼叫中收集所有书籍:
List<Books> booksDTOList=new ArrayList<>();
// ....
booksDTOList.addall(mapDTO(modelList1));
booksDTOList.addall(mapDTO(modelList2));
booksDTOList.addall(mapDTO(modelList3));
如果您确实选择将列表传递给映射方法,则不需要返回它,因为 Java 是通过引用传递的(映射方法中的列表对象与调用者中的对象实例相同)。
void mapDTO(Arraylist<Books> booksDTOList, List<Object[]> modelList){
Books books = null;
for (Object[] model : modelList){
books = new Books((String)model[0], (String)model[1]);
booksDTOList.add(books);
}
}
要回答您的第一个问题,将对象添加到列表(ArrayList 或其他)不会覆盖列表中已经存在的元素。
编辑我用 camelCase 方法和对象名称更新了所有示例(并更正了一些语法错误)。
您可以做的另一项更改(基于可用信息)是将 modelList 更改为包含 String 数组:
void mapDTO(Arraylist<Books> booksDTOList, List<String[]> modelList){
Books books = null;
for (String[] model : modelList){
books = new Books(model[0], model[1]);
booksDTOList.add(books);
}
}
推荐阅读
- sql - Sql Query获取日期不包括特定月份
- django - 为什么 Django 默认密码哈希算法使用 216000 次迭代?
- r - 在R中的重复循环内的指定时间生成数据摘要的PDF
- playframework - 不推荐使用 scalatestplus-play 的 MockitoSugar
- css - css没有将样式应用于第n个孩子的范围
- html - 当我添加另一个
- 对我
- 它一直出现在页面底部的容器外部
- 对我
- javascript - 如何用新输入绘制新弹丸?
- c# - 使用 Utf8Json 库进行序列化时排除空字段?
- python - Tensorflow 提供不同的控制台输出,并且由于某种原因速度较慢
- wordpress - Wordpress 联系表 -7 和 Pardot 集成