将实例化对象添加到 ArrayList 的最佳方法是什么

ask*_*skd 2 java arraylist

在这个例子中,我创建了一个 ArrayList<> 的狗而不是通常的 Array[]。但是,我想知道将 dog 对象添加到 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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mak*_*oto 6

现在,dogs空空如也。这意味着sort没有任何效果,而且增强的 for 永远不会执行。

您有多种选择:

  • 在实例化它们时添加它们。不要创建不会被使用的变量。

    例如,您的其中一行将改为:

    dogs.add(new Dog("Alex", "American Pit Bull Terrier", 100));
    
    Run Code Online (Sandbox Code Playgroud)
  • 对 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));
    }};
    
    Run Code Online (Sandbox Code Playgroud)
  • 按照评论中的建议,使用Arrays.asList()

    ArrayList<Dog> dogs = new ArrayList<>(Arrays.asList(dog1, dog2, dog3, dog4, dog5));
    
    Run Code Online (Sandbox Code Playgroud)

    不过,这确实需要变量。

对于您提出的其他问题:

  • 每个人都有自己的目的和位置。使用数组时,你有对象与工作的固定长度,并使用List任何类型(的ArrayListLinkedList等),当你没有一个固定长度。

  • 正如我上面解释的那样,不。Enhanced-for 迭代集合中的现有元素,由于集合中没有元素,循环将不会执行。

    除非您在另一个可以索引的结构中拥有您想要的数据,否则在循环中执行它会有点尴尬,所以我不推荐这种方法。