首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建包含列表的集合类

创建包含列表的集合类
EN

Stack Overflow用户
提问于 2022-10-19 16:41:30
回答 2查看 69关注 0票数 0

我有一个包含信息的类:

代码语言:javascript
复制
class Artists {
    int id;
    String description;
    int year;

    void insert(int i, String d, int y) {
        id = i;
        description = d;
        year = y;
    }

    void display() {
        System.out.println(id + description + year);
    }
}

public class ArtistsRunner {
    public static void main(String[] args) {
        Artists a1 = new Artists();
        Artists a2 = new Artists();
        Artists a3 = new Artists();

        a1.insert(23, "An", 2015);
        a2.insert(13, "Mon", 2089);
        a3.insert(11, "Gla", 2013);

        a1.display();
        a1.display();
        a3.display();
    }
}

我想用艺术家列表的集合类创建另一个java类。我如何从艺术家类中检索信息,并将其放入我的新java类中的列表中?

我想我必须:

  1. 使用main方法在我的类中声明静态集合字段
  2. 创建一个新的艺术家,并将其添加到该集合中。

这是正确的吗?我该怎么做?(对Java来说还是很新的)

EN

回答 2

Stack Overflow用户

发布于 2022-10-19 16:52:27

声明一个列表,并将您的艺术家实例放入其中。

代码语言:javascript
复制
List<Artists> myArtists = new ArrayList<>();
myArtists.add(a1);
myArtists.add(a2);
myArtists.add(a3);

因为您的要求是创建一个“静态”列表(可能是用于赋值,因为您永远不想在现实生活中这样做),所以在类级别声明这个列表并在main中填充它(main语句)。

在创建新的艺术家实例时,可以使用add方法向列表中添加任何(合理的)艺术家数量。

除此之外,您在设计类时还存在一些基本问题。虽然他们工作,但不一定是正确的。

您的“艺术家”类只包含单个艺术家的信息,因此这个类应该称为“艺术家”(单数)。此外,insert方法正在填充该艺术家,应该是一个构造函数。

代码语言:javascript
复制
public class Artist {
  private int id;
  private String description;
  private int year;

  public Artist(int id, String description, int year) {
    this.id = id;
    this.description = description;
    this.year = year;
  }

  public void display() {
    System.out.println(id + description + year);
  }
}

注意,您的显示方法有点奇怪--在这些变量值之间没有空格。

现在,您可以创建这样一个新的艺术家:

代码语言:javascript
复制
Artist a1 = new Artist(1, "Bob", 2010);

这使得“填充列表”练习更加容易,因为您可以在一行中这样做:

代码语言:javascript
复制
List<Artist> myArtists = new ArrayList<>();
myArtists.add(new Artist(1, "Bob", 2010));

另外,除非您的作业专门要求一个"runner“类,否则您只需将主方法直接贴在艺术家类本身上即可。

票数 1
EN

Stack Overflow用户

发布于 2022-10-19 16:58:14

您的main方法可以简化为:

代码语言:javascript
复制
record Artist ( int id , String description , Year year ) {}
List < Artist > artists = 
    List.of
    (
        new Artist ( 23, "An", Year.of( 2015 ) ) ,
        new Artist ( … ) ,
        new Artist ( … ) 
    )
;
System.out.println( artists ) ;

记录是定义类的一种简单方法,其主要目的是透明和不变地进行数据通信。可以在方法中本地定义记录。

java.time.Year是一个代表一年的类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74128991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档