从ArrayList<>
构建List<>
的最佳方法是什么?
一个例子很棒
和另一个问题,我应该继续使用List<>
而不是将我的所有Lists
转换为ArrayLists
修改
只是为了确保我的代码:这可以工作:
public List<Rendezvous> getAllNewlyDoneRdvs() {
if (!isThereNewlyDoneRdvs())return null;
List<Rendezvous> rdvs = rdvDao.findAllByState(Constants.rdvStateUndone);
ArrayList<Rendezvous> rendezvousList = new ArrayList<>();
for (Rendezvous rdv :rdvs ){
if (rdv.getDateRdv().before(Constants.getCurrentDatetime())) rendezvousList.add(rdv) ;
}
rdvs = rendezvousList;
return rdvs;
}
答案 0 :(得分:4)
假设两种类型相同
在这种情况下, List<>
可能已经是ArrayList<>
只是更改引用
如果不迭代并添加
答案 1 :(得分:3)
如果您想确定要使用ArrayList,可以new ArrayList(existingList)
。
执行此操作的最佳原因可能是您要在列表中添加,更新或删除项目,而不会影响原始列表。
答案 2 :(得分:1)
在声明时使用List是一种很好的做法。
List<> list = new ArrayList<>();
答案 3 :(得分:1)
你应该知道List是一个接口,而ArrayList是一个具体的类,所以你应该总是使用
List<Type> myList = new ArrayList<Type>();
答案 4 :(得分:0)
您可以使用如图here
所示的Collections.list()答案 5 :(得分:0)
如果你有一个方法采用List
参数,你可能会被抓住,因为List
的某些实现(即使在标准库中)是不可变的或具有固定大小。
在这种情况下,如果您需要一个可变列表,那么创建一个与您现有的不确定实现ArrayList
List
是完全合理的。
ArrayList<T> newArrayList = new ArrayList<T>(oldList);
答案 6 :(得分:0)
你认为你先比较日期然后准备新名单。
这绝对没问题。但在这种情况下,你应该在DAO本身有另一个方法,它返回当前日期之前具有DateRdv的Rendezvous列表。