构建一个ArrayList<>来自列表<>

时间:2014-09-02 21:18:59

标签: java list arraylist

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;
    }

7 个答案:

答案 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列表。