我有一个带有以下字段的“消息”类:
private String text;
private String from;
private String to;
具有以下字段的“用户”类:
private String name;
private String surname;
private int age;
和一个使用Map
private Map<User, ArrayList<Message>> sourceOfMessage = new HashMap<>();
并实现一种名为'write'的方法
public void write(User sender, User receiver, String message) {
Message message1 = new Message(message, sender.getName(), receiver.getName());
sourceOfMessage.put(sender,message1);
sourceOfMessage.put(receiver,message1);
}
在Main类中,我执行以下操作:
User ivan = new User("Ivan", "Mad", 23);
User igor = new User("Igor", "Bil", 25);
ChatService chat = new ChatService();
chat.write(ivan, igor, "Hello");
我的问题是:为什么映射(sourceOfMessage
)包含两个键却没有值?
答案 0 :(得分:1)
地图值必须为ArrayList<Message>
,但您只输入Message
。该代码甚至不应该编译。
答案 1 :(得分:1)
private Map<User, ArrayList<Message>> sourceOfMessage
该值的类型为ArrayList
,而不是Message
。
sourceOfMessage.put(sender,message1);
您使用put
的映射方法,因此将sender
映射为message1
的键,而Message
的值是class Teacher:
"""The properties of the teachers"""
allTeachers = []
def __init__(self, name, lessons, timeframe):
self.name = name
Teacher.allTeachers.append(self.name)
self.lessons = lessons # number of lessons
self.timeframe = timeframe
类型。
毕竟,您要在它们之间传递不兼容的类型。