这个问题在这里已经有答案了:
在一个类中共享相同值的java(4个答案)
5天前关门了。
我有一个散列图,应该显示艺术家和他们的歌曲。我有两个艺术家的对象声明为马克斯和布赖恩。当我执行代码时,两位艺术家共享歌曲列表。如何将添加的歌曲分开,以便每个艺术家都有自己的列表?
我的电流输出是:
布莱恩:你好,世界,世界,世界
麦克斯:你好,世界,世界,世界,世界
当我想要的时候:
布莱恩:世界,世界
麦克斯:你好,世界,世界
这个类创建Map并添加艺术家/歌曲。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class music {
public static void run() {
Artists max = new Artists("Max");
Artists brian = new Artists("Brian");
Map<String, String> musicLibrary = new HashMap<>();
musicLibrary.put(max.getArtist(), max.addSong("Hello"));
musicLibrary.put(max.getArtist(), max.addSong("World"));
musicLibrary.put(brian.getArtist(), brian.addSong("World"));
musicLibrary.put(brian.getArtist(), brian.addSong("World"));
musicLibrary.put(max.getArtist(), max.addSong("World"));
Set<String> keySet = musicLibrary.keySet();
for (String key : keySet) {
String value = musicLibrary.get(key);
System.out.println(key + " : " + value);
}
}
}
此类是artists对象。
import java.util.LinkedList;
import java.util.ListIterator;
public class Artists {
String songName;
String artist;
static LinkedList<String> artistSongs = new LinkedList<String>();
static ListIterator<String> songsIt = artistSongs.listIterator();
public Artists(String artist){
this.artist = artist;
}
public static String addSong(String songName){
//this.artist = artist;
artistSongs.add(songName);
return output();
}
public static String output(){
String allSongs = "";
for(String song: artistSongs) {
allSongs = allSongs + ", " + artistSongs.get(artistSongs.indexOf(song));
}
return allSongs;
}
public String getArtist(){
return artist;
}
}
我的电流输出是:
布莱恩:你好,世界,世界,世界
麦克斯:你好,世界,世界,世界,世界
当我想要的时候:
布莱恩:世界,世界
麦克斯:你好,世界,世界
1条答案
按热度按时间ppcbkaq51#
你已经宣布
artistSongs
作为static
. 这意味着它不属于特定示例,而是属于类,并且在所有示例之间共享。将其定义为一个示例变量,您应该可以: