在此示例中,我创建了狗的 ArrayList<>,而不是通常的 Array[]。但是,我想知道将狗对象添加到 ArrayList 的最佳方法,并且我还想知道以下内容:
1- ArrayList 与 Array 有何不同?哪个更好?
2- 是否可以使用for循环将实例化的对象添加到ArrayList中?
import java.util.ArrayList;
import java.util.Collections;
public class DogDriver {
public static void main(String[] args) {
ArrayList<Dog> dogs = new ArrayList();
Dog dog1 = new Dog("Alex", "American Pit Bull Terrier", 100); //(name, breed, license)
Dog dog2 = new Dog("Duke", "German Shepherd", 113);
Dog dog3 = new Dog("Lucy", "Rottweiler", 120);
Dog dog4 = new Dog("Bailey", "Doberman Pinscher", 119);
Collections.sort(dogs);
for (Dog dog : dogs) {
System.out.println(dog);
}
}
}
最佳答案
现在,dogs
是空的。这意味着 sort
无效,并且增强型 for 永远不会执行。
您有多种选择:
在实例化它们时添加它们。不要创建不会使用的变量。
例如,您的其中一行将改为:
dogs.add(new Dog("Alex", "American Pit Bull Terrier", 100));
对 ArrayList 使用静态初始值设定项。这有点难读,但非常流畅。它完成与直接添加相同的事情,但位置不同。
ArrayList<Dog> dogs = new ArrayList<Dog>() {{ add(new Dog("Alex", "American Pit Bull Terrier", 100)); add(new Dog("Duke", "German Shepherd", 113)); add(new Dog("Lucy", "Rottweiler", 120)); add(new Dog("Bailey", "Doberman Pinscher", 119)); }};
按照评论中的建议,使用
Arrays.asList()
:ArrayList<Dog> dogs = new ArrayList<>(Arrays.asList(dog1, dog2, dog3, dog4, dog5));
但这确实需要变量。
对于您提出的其他问题:
每个人都有自己的目的和位置。当您要使用固定长度的对象时,请使用数组,并使用任何类型的
List
(ArrayList
、LinkedList
等)当你没有固定的长度时。正如我上面所解释的,不。增强型 for 会迭代集合中现有的元素,由于集合中没有元素,因此循环不会执行。
在循环中执行此操作会有点尴尬,除非您在另一个可以索引的结构中拥有所需的数据,所以我不推荐这种方法。
关于java - 将实例化对象添加到 ArrayList 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28705832/