Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从csv加载并使用包含多个值的键存储在HashMap中_Java_Data Structures_Hashtable - Fatal编程技术网

Java 从csv加载并使用包含多个值的键存储在HashMap中

Java 从csv加载并使用包含多个值的键存储在HashMap中,java,data-structures,hashtable,Java,Data Structures,Hashtable,我有一个hashmap,它存储csv文件中的值。该文件由三列组成:模板名称、参数1、参数2 我一直在尝试使用TEMPLATE_NAME作为键,PARM_1,PARAM_2作为每行的值。问题是可能有许多模板名称具有不同的参数组合。我的要求规定,当选择参数1和参数2时,应显示模板名称列表 我知道hashmap不能有重复的键,因此hashmap只创建一个带有值的模板名称键,而忽略重复项。我如何解决这个问题 private void load() throws IOException{

我有一个hashmap,它存储csv文件中的值。该文件由三列组成:模板名称、参数1、参数2

我一直在尝试使用TEMPLATE_NAME作为键,PARM_1,PARAM_2作为每行的值。问题是可能有许多模板名称具有不同的参数组合。我的要求规定,当选择参数1和参数2时,应显示模板名称列表

我知道hashmap不能有重复的键,因此hashmap只创建一个带有值的模板名称键,而忽略重复项。我如何解决这个问题

private void load() throws IOException{
        CsvReader reader = new CsvReader();
        List<List<String>> rows = reader.parse(csvFile);

    for (int i = 1 ; i<rows.size() ; i++){
        List<String> columns = rows.get(i);
        String templateName = columns.get(TEMPLATE_NAME);

        OnConfig config = entries.get(templateName);
        if (config == null){
            config = new OnConfig(templateName);
            entries.put(templateName, config);
        }

        config.put(columns.get(PARAM_1), columns.get(PARAM_2));

    }
}



public class OnConfig {

    private final String templateName;

    private final HashMap<String, String> attributes = new HashMap<>();

    public OnConfig(String templateName){
        this.templateName= templateName;
    }

    public void put(String param1, String param2){
        attributes.put(param1, param2);
    }

    public String get(String param1){
        return attributes.get(param1);
    }

    public String getTemplateName() {
        return templateName;
    }

    @Override
    public String toString() {
        return String.format("Template Name: %s, Number of Attributes: %s", getTemplateName(), attributes.value());
    }
}
private void load()引发IOException{
CsvReader reader=新的CsvReader();
列表行=reader.parse(csvFile);
对于(int i=1;i
问题是可能有许多模板名称具有不同的参数组合

  • 创建一个表示模板名称并包含PARM_1、PARAM_2的列表或映射的新类

  • 使用嵌套的数据结构。例如,在映射中嵌套一个映射:外键是模板名称,内键是参数1