如何重写从不可变HashMap返回某些字符串的方法?



我正在尝试为分配编程基于java的聊天机器人。我有一个叫做Chatty的抽象接口。它有一组不可变的问题和答案映射:

import java.util.HashMap;
import java.util.Map;
public interface Chatty {
// Chat levels
int LEVEL_MIN = 1;
int LEVEL_MAX = 3;
// Question & answer repertoires
Map<String,String> QA = Map.of(
"Hello, how are you?", "I'm great, thanks.",
"What are you?", "I am a chatbot",
"Do you have a hobby?", "I like chatting with you.",
"Can you tell a joke?", "You are very funny!",
"What is the capital of UK?", "London",
"Do you like Java?", "Yes of course.",
"Are you a robot?", "Yes I’m a robot, but I’m a smart one!",
"Do you get smarter?", "I hope so."
);

/**
* Ask a question
*
* @return the question
*/
String question();
/**
* Answer a given question by a given robot
*
* @param question A given question
* @return An answer
*/
String answer(String question);
}

我有另一个类ChatBot,我的任务是实现这个接口。由于它是一个抽象接口,我自然必须重写String question和String answer(String question)。

public class ChatBot implements Chatty {

@Override public String question() {
return ;
}

@Override public String answer(String question) {
return ;
}

但是,当只允许某些问题时,我不确定如何返回问题。换句话说,我如何从Hashmap中取出这些特定的字符串?

方法Chatty.question()究竟是做什么的?在我看来,它应该返回一组问题,用户可以问机器人。在这种情况下,它应该是这样的

@Override
Set<String> getQuestions() {
return QA.keySet();
}
@Override
String getAnswer(String question) {
return QA.getOrDefault(question, "I don't know, how to answer that question");
}

最新更新