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

标签 java arraylist

在此示例中,我创建了狗的 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(ArrayListLinkedList 等)当你没有固定的长度时。

  • 正如我上面所解释的,不。增强型 for 会迭代集合中现有的元素,由于集合中没有元素,因此循环不会执行。

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

关于java - 将实例化对象添加到 ArrayList 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28705832/

相关文章:

java - 可序列化的单例类

java - 带有 ListView 标题的 ListView

java - 新手尝试使用Java ArrayList来存储从数据库获取的ResultSet

java - 根据对象 JAVA 11 中值的自定义优先级对对象列表进行排序

java - 如何在Java中创建一个可以存储50个字符串的ArrayList?

Java JNDI 名称 java :/

java - Thread.sleep(时间) 与 robots.wait(时间)

java - GUI 添加了组件,但显示时显示空白

php - 比较两个数组并获得所有差异

java - 在 while 循环内将 ArrayList 添加到 TreeMap