Java读取过去保存的变量

时间:2013-12-19 16:23:47

标签: java file io save stanford-nlp

我正在搜索正在扫描信息的用户输入的问题,我正在保存信息和原始问题。

保存问题+信息的最佳方法是什么,以便可以调用它以便我能够在刚刚提出的问题之前阅读X问题并获取信息/变量?

An example:

[User]"what is 1+1?"
[Reply]"two"
save information: "what is 1+1","two"

[User]"how is the dog?"
[Reply]"fine"
save information:"how is the dog?",subject = "dog", condition = "fine"

getQuestion(1) -> "what is 1+1?"
getInformation(current) -> subject = "dog" condition = "fine"

使用int(问题X),字符串(问题)或其他问题调用每个问题的信息会更好吗?

到目前为止

代码:

Map<String,String> variable = new HashMap<>();
    public QuestionInfo(String name,String variable) {
        this.variable.put(name, variable);
    }
    public String get(String name){
    if(variable.containsKey(name)) {
        return variable.get(name);
    } else {
        return "";
    }
    }

我虽然使用:

  Map<String,QuestionInfo> Questions = new HashMap<>();

首先,但如果我想打电话,我不能使用int 所以相反:

Map<Integer,QuestionInfo> Questions = new HashMap<>();

然后我可以将问题添加为第一条信息。

2 个答案:

答案 0 :(得分:2)

由于您希望保留回复的顺序,因此您可能希望使用List

然后你只需要决定要制作什么样的列表。由于你有两个密切相关的项目 - 主题(一个字符串)和条件 - 我可能会创建一个自定义类:

import java.util.Map;
public class QuestionInfo {

    private String question;
    private Map<String, String> variables;

    public QuestionInfo(String question, Map<String, String> variables) {
        this.question = question;
        this.variables = variables;
    }

    public String question() {
        return question;
    }

    public Map<String, String> vars() {
        return variables;
    }
}

然后你会创建你的列表来存储这些,例如:

List<QuestionInfo> questionList = new ArrayList<QuestionInfo>();

还有其他方法可以存储这些字符串(例如,您可以使用分隔符连接它们,或使用String [2])..但在我看来,这可能是以后最容易阅读和理解的。

以下是用户输入内容的近似值,以及如何使用questionList + QuestionInfo来存储数据:

[用户]“狗怎么样?” [回复]“罚款”

Map<String, String> varMap = new HashMap<String, String>();
varMap.put("subject", "dog");
varMap.put("condition", "fine");
questionList.add(new QuestionInfo("how is the dog?", varMap));

现在您可以使用以下方式访问此信息:

questionList.get(0).question() // returns "how is the dog?"

questionList.get(0).vars().get("condition") // returns "fine"

请注意,这会掩盖代码以实际收集用户输入。

还有其他可能性。 例如,您可以将String...传递给QuestionInfo构造函数并解析变量/在那里创建地图。 您还可能希望将整个响应存储为与变量分开的String。 如果你有一组一致的键,你可能还想为键创建一个枚举。

答案 1 :(得分:0)

我想我会创建一个“问题”类,用于存储实际问题和所需信息(主题,条件等),并将它们存储在一个数组中。

一些代码添加了关于多个答案的评论(它缺少了设置者,但我想你明白了):

public class Question {
    private String subject;
    private List<String> responses;

    public String getSubject(){
        return subject;
    }
    public String getResponse(int _index){
        if (_index <= response.size())
        {
            return response.get(_index);
        }
        return "";
    }
}