我有一个包含信息的类:
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类中的列表中?
我想我必须:
这是正确的吗?我该怎么做?(对Java来说还是很新的)
发布于 2022-10-19 16:52:27
声明一个列表,并将您的艺术家实例放入其中。
List<Artists> myArtists = new ArrayList<>();
myArtists.add(a1);
myArtists.add(a2);
myArtists.add(a3);因为您的要求是创建一个“静态”列表(可能是用于赋值,因为您永远不想在现实生活中这样做),所以在类级别声明这个列表并在main中填充它(main语句)。
在创建新的艺术家实例时,可以使用add方法向列表中添加任何(合理的)艺术家数量。
除此之外,您在设计类时还存在一些基本问题。虽然他们工作,但不一定是正确的。
您的“艺术家”类只包含单个艺术家的信息,因此这个类应该称为“艺术家”(单数)。此外,insert方法正在填充该艺术家,应该是一个构造函数。
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);
}
}注意,您的显示方法有点奇怪--在这些变量值之间没有空格。
现在,您可以创建这样一个新的艺术家:
Artist a1 = new Artist(1, "Bob", 2010);这使得“填充列表”练习更加容易,因为您可以在一行中这样做:
List<Artist> myArtists = new ArrayList<>();
myArtists.add(new Artist(1, "Bob", 2010));另外,除非您的作业专门要求一个"runner“类,否则您只需将主方法直接贴在艺术家类本身上即可。
发布于 2022-10-19 16:58:14
您的main方法可以简化为:
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是一个代表一年的类。
https://stackoverflow.com/questions/74128991
复制相似问题