如何在Java中在同一列表中添加多个对象类型

如何在Java中在同一列表中添加多个对象类型,java,arraylist,linked-list,singly-linked-list,Java,Arraylist,Linked List,Singly Linked List,我是java新手,试着克服它。我有像字符串URL、整数分数这样的数据,我想在数组列表中实现它。我搜索了如何在ArrayList或LinkedList中实现多种类型的变量,发现解决方案是从超类创建子类,我创建了这个子类: public class MySubClass extends MyList{ public String URL; public int UrlScore; public MySubClass (String a, int b){ URL = a; Url

我是java新手,试着克服它。我有像字符串URL、整数分数这样的数据,我想在数组列表中实现它。我搜索了如何在ArrayList或LinkedList中实现多种类型的变量,发现解决方案是从超类创建子类,我创建了这个子类:

public class MySubClass extends MyList{

public String URL;
public int UrlScore;

public MySubClass (String a, int b){

    URL = a;
    UrlScore = b;
    }
}
我的超级班是:

import java.util.ArrayList;

public class MyList {

public static void main(String[] args) {

    ArrayList <MySubClass> myList_1 = new ArrayList <MySubClass> ();

    myList_1.add("http://www.something.com", 5);

    System.out.println(myList_1);   

    }
}
尝试使用“添加对象”时出错?错误是这样的:

类型ArrayList中的addint,MySubClass方法不适用于参数字符串int


你能告诉我我哪里做错了吗?我怎样才能修好它?提前感谢。

您应该将MySubClass的实例添加到列表中:

myList.add(new MySubClass("http://www.something.com", 5));
顺便说一句,MySubClass不需要是MyList的子类

如注释中所述,您应该重写MySubClass中的toString方法,以便按照您的意愿显示MySubClass的每个实例

一种可能的实施方式:

public class MySubClass 
{

    public String URL;
    public int UrlScore;

    public MySubClass (String a, int b)
    {
        URL = a;
        UrlScore = b;
    }

    public String toString()
    {
        return URL + "=" + UrlScore;
    }
}

您可以通过创建MySubClass的对象并将其添加到列表中来修复它,例如

MySubClass obj = new MySubClass("http://www.something.com", 5);
myList_1.add(obj);

尝试类似的方法,代码就会工作。

myList.addnewmysubclass…,5;也许?现在可以了,谢谢。但是输出是这样的MySubClass@15db9742它应该打印这行:,5你知道我遗漏了什么吗?现在感谢它的作品,但当我编译它时,我得到了如下内容:MySubClass@15db9742你能告诉我为什么它不打印吗,5?@medo0070在MySubClass中重写了toString方法。另外,从您当前的代码来看,MySubClass不需要扩展MyList类。您需要重写MySubClass中的toString方法,例如@override public String toString{return MySubClass{+URL='+URL+'\+,UrlScore=+UrlScore+'};}但toString方法是否会将int分数、字符串URL转换为这两个字符串?我不想将我的int分数转换为String,因为我将使用它与其他URL的分数进行比较,并将它们添加到PriorityQueue。我的问题是toString方法会将其他数据类型int、float、double转换为String,还是它只是处理混合数据类型情况的一种方法?Thanks@medo0070当您调用System.out.printlnsomeObj时,java调用toString方法来显示对象信息。您可以自由显示您感兴趣的所有相关信息,它不会影响优先级队列或其他任何内容。感谢您的帮助。在你看来,你能建议我如何更好地编写代码吗?提前谢谢。顺便说一句:我尝试了你的方法并编译了它,没有错误,但是输出是这样的:MySubClass@15db9742你能告诉我为什么不打印吗?再次感谢@EranThanky@Eran我应该对您提供的代码使用Override方法还是不必要?@medo0070重写方法时使用@Override注释总是好的,但这不是强制性的。谢谢您的建议。。但是为什么我不使用子类呢?我该怎么改成普通班?如果我用了它怎么了?再次感谢您的支持help@medo0070根据您展示的代码,没有必要将MySubClass设置为MyList的子类。只有当MySubClass是一种MyList时,MySubClass才应该扩展MyList。因为您的MyList类只有一个静态方法main,所以我看不出任何扩展它的类有什么意义。
import java.util.ArrayList;

public class MyList {

public static void main(String[] args) {

    ArrayList <MySubClass> myList_1 = new ArrayList <MySubClass> ();
    MySubClass myobj = new MySubClass("http://www.something.com", 5);

    myList_1.add(myobj);



    }
}