Basically there are three ways without iterating manually,
1 Using constructor
ArrayList<Dog> dogs=getDogsdogs = getDogs();
ArrayList<Dog> clonedList=newclonedList = new ArrayList<Dog>(dogs);
2 Using addAll(Collection<? extends E> c)addAll(Collection<? extends E> c)
ArrayList<Dog> dogs = getDogs();
ArrayList<Dog> clonedList = new ArrayList<Dog>();
clonedList.addAll(dogs);
3 Using addAll(int index,Collection<? extends E> c)addAll(int index, Collection<? extends E> c) method with intint parameter
ArrayList<Dog> dogs = getDogs();
ArrayList<Dog> clonedList = new ArrayList<Dog>();
clonedList.addAll(0, dogs);
NB : The behavior of these operations will be undefined if the specified collection is modified while the operation is in progress.