通过枚举和字符串类型创建字典

时间:2019-03-22 08:08:37

标签: java dictionary

我对Java很陌生。我想做的就是有一本这样的字典。

我的代码:

import java.util.regex.Pattern;
import java.util.ArrayList;
import java.util.List;

public class Solution{

public enum Num{
        COMPLETE,
        NOTYET
}

public static final Map<Num,String> Numbering;
static{
        Map<Num,String> putting = new EnumMap<>(Num.class);
        putting.put(Num.COMPLETE, "comp");
        putting.put(Num.NOTYET, "yet");

}
everything = Collections.unmodifiableMaps(putting);

public static void main(String[] args){
        System.out.println(everything);

}
}

首先,我想在类Solution中为枚举创建一个类(请告诉我,如果我理解不正确,也许枚举不是一个类)。然后,我创建了一个方法...。实际上,在这里我不知道为什么需要在LINE 13中使用“静态”来存储字典。

我希望最终打印字典并检查是否正确。

我的预期输出: ----我显示的是python字典,因为我主要使用python ----

COMPLETE:"comp"
NOTYET:"yet"

尝试在linux中编译时出现我的错误:

everything = Collections.unmodifiableMaps(putting); //this line with problem.

3 个答案:

答案 0 :(得分:0)

everything = Collections.unmodifiableMaps(putting);放在静态块中。

此外,您没有字段everything。您是说Numbering

答案 1 :(得分:0)

请忽略我的问题。解决了:

import java.util.regex.Pattern;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
public class Solution{

public enum Num{
        COMPLETE,
        NOTYET,
}

public static final Map<Num,String> Numbering;
static{
        Map<Num,String> putting = new EnumMap<>(Num.class);
        putting.put(Num.COMPLETE, "comp");
        putting.put(Num.NOTYET, "yet");

        Numbering = Collections.unmodifiableMap(putting);

}
public static void main(String[] args){
        System.out.println(Numbering);
}
}

答案 2 :(得分:0)

Java中的

Enum类型已经可以将值与Enum代码关联。请参见official documentation中的“行星”示例。 不确定为什么以后要处理地图,但这可以简化代码!

您可以创建以下内容:

public enum Num {
    COMPLETE("comp"),
    NOTYET  ("notyet");

    private final double value;

    Num(String value) {
        this.value = value;
    }

    private String getValue() {
        return this.value;
    }
}