Iterate on the items, and clone them one after the other,  putting the clones in your result array as you go.
public static List<Dog> cloneList(List<Dog> list) {
    List<Dog> clone = new ArrayList<Dog>(list.size());
    for (Dog item : list) clone.add(item.clone());
    return clone;
}
For that to work, obviously, you will have to get your Dog object to implement the Cloneable interface, and the clone() method