无法在地图中放置对象

时间:2018-07-22 09:23:10

标签: java dictionary put

我有一个带有以下字段的“消息”类:

private String text;
private String from;
private String to;

具有以下字段的“用户”类:

private String name;
private String surname;
private int age;

和一个使用Map

的类“ ChatService”
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)包含两个键却没有值?

2 个答案:

答案 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 类型。

毕竟,您要在它们之间传递不兼容的类型。