Java 使用带有ArrayList的自定义类

Java 使用带有ArrayList的自定义类,java,arraylist,Java,Arraylist,为什么这是错误的?我不能使用add,我不知道如何使用。一些java文档说我需要添加(索引、数据),但其他文档只是添加(数据),编译器也支持添加(数据)。我的数据类型有错误 import java.util.*; public class graph1 { public static void main (String[] args){ ArrayList<Node> web = new ArrayList<Node>();

为什么这是错误的?我不能使用add,我不知道如何使用。一些java文档说我需要添加(索引、数据),但其他文档只是添加(数据),编译器也支持添加(数据)。我的数据类型有错误

import java.util.*;
public class graph1 {

    public static void main (String[] args){
        ArrayList<Node> web = new ArrayList<Node>();    
        web.add(0, "google", new int[]{1,2});

    }
}

您忘记了在ArrayList的
add(…)
方法中包含
new Node(…)
,因为您不是在向ArrayList添加int、String和int数组的组合,而是在添加节点对象。为此,必须显式创建节点对象,然后添加:

web.add(new Node(0, "google", new int[]{1,2}));
使用以下命令:

web.add(new Node(0, "google", new int[] {1, 2}));

您有一个节点数组列表,但正在尝试添加一组随机变量。您需要使用这些变量创建一个节点,然后添加该节点

web.add(new Node(0, "google", new int[]{1,2}));

您需要像这样创建节点

Node node = new Node(i, title, links);
web.add(node);

要将自定义类添加到ArrayList中,必须对其进行修改。为此,使用
web.add(新节点(0,“google”,newint[]{1,2}))

在您的例子中,您使用了
web.add(0,“google”,newint[]{1,2}),java编译器理解为您试图同时添加3个对象,所以编译器抱怨您的代码有问题


此外,如果需要对数组进行排序,则应该考虑自定义,因为默认情况下不知道如何正确地对对象进行排序。< / P>哦,OK,我不确定java是如何处理这样的数据类型的。我不知道这是否暗示我放的是一个节点或不是。@YKQ56:不是。编译器不知道您要添加什么类型的对象,除非您明确地告诉它。然后,编译器必须检查以确保它是正确的对象类型。为了帮助您,请在此处学习语言基础知识:。您在另一个问题中提到了不太高级,但在理解数组等基础知识之前,您正在进行创建和使用对象等工作。专注于条件、循环、数组,然后转向对象/类。事实上,我有一年左右的Java经验,只是编程非常差。回到基础,学习基本类型、条件、循环和数组。如果没有它们,你只会对对象、类和诸如此类的东西更加困惑。我对所有这些都非常熟悉。在你的另一个问题中,你不知道如何初始化数组。我只是说,在我看来,这会有很大帮助。无论如何,祝你好运!以帮助解释此代码。您拥有的是节点的数组列表。节点是一个对象,它有一个int i、一个字符串标题和一个int数组。因此,当您向列表中添加数据时,实际上您希望添加一个节点,而不是任何其他数据。你可以完全按照安德鲁说的做。它创建一个名为“node”的新节点,然后将其添加到列表中。要使用您提供的值执行此操作,您需要:Node Node=new Node(0,“google”,new int[]{1,2});添加(节点);

Node node = new Node(i, title, links);
web.add(node);