Java中的枚举查找

时间:2012-03-15 05:38:56

标签: java enums lookup

我不太熟悉Java并且需要一些枚举查找帮助(我认为这就是所谓的?)我有多年的C经验,所以我知道我想用C做什么,但是我不知道Java中的等效语法或构造。

我在这台计算机上没有C环境,因此语法可能会关闭,但这正是我想要完成的:

typedef enum regions_t {
     REGION_CALIFORNIA,
     REGION_HAWAII,
     REGION_LOUISIANA,
     REGION_NUM_REGIONS
} regions_t;

typedef struct regionData_t {
    regions_t regionName;
    char_t[50] url;
    int32_t population;
 } regionData_t;

 regionData_t myRegions[REGION_NUM_REGIONS] {
     {REGION_CALIFORNIA, "http://http://california.gov/", 10123321},
     {REGION_HAWAII, "http://hawaii.gov", 5123321},
     {REGION_LOUISIANA, "http://louisiana.gov/", 8123321}
 }

通过这种方式,我可以以这种方式访问​​url数据,这种数据易于阅读并且易于扩展:

myRegions[REGION_HAWAII].url

如何在Java中实现相同的想法?

4 个答案:

答案 0 :(得分:2)

我怀疑你需要这样的东西:

public enum Region {
    CALIFORNIA("california-url", 1),
    HAWAII("hawaii-url", 2),
    LOUISIANA("louisiana-url", 3);

    private String url;
    private int population;

    private Region(String url, int population) {
        this.url = url;
        this.population = population;
    }

    public int getPopulation() {
        return population;
    }

    public String url() {
        return url;
    }
}

请注意,String url应该来自外部资源。

答案 1 :(得分:1)

又快又脏:

public enum Region {
    CALIFORNIA, HAWAII, LOUISIANA
}

public class RegionData {
    public final Region region;
    public final String url;
    public final int population;
    public RegionData(Region region, String url, int population) {
        this.region = region;
        this.url = url;
        this.popuplation = population;
    }
}

…

Map<Region, RegionData> regionData = new HashMap<Region, RegionData>();
regionData.put(Region.CALIFORNIA, new RegionData(Region.CALIFORNIA, "http://http://california.gov/", 10123321));
…

System.out.println(regionData.get(Region.CALIFORNIA).url);

但你也可以使用Java中的枚举也是普通类的事实。

public enum Region {
    CALIFORNIA("http://http://california.gov/", 10123321),
    HAWAII("http://hawaii.gov", 5123321),
    LOUISIANA("http://louisiana.gov/", 8123321);
    public final String url;
    public final int population;
    private Region(String url, int population) {
        this.url = url;
        this.population;
    }
}

…

System.out.println(Region.CALIFORNIA.url);

答案 2 :(得分:0)

Java的枚举也略有不同,但是您需要将所有这些信息封装在一个类中,而不是结构。我尽可能直接列出翻译:

public enum Region
{
    REGION_CALIFORNIA,
    REGION_HAWAII,
    REGION_LOUISIANA;
}

public class RegionData
{
   Region region;
   String url;
   int    population;

   public RegionData(Region region, String url, int population)
   {
      this.region     = region;
      this.url        = url;
      this.population = population;
   }
}

然后,您需要查看HashTable类的HashMap以获得所需的查找功能:

http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html

答案 3 :(得分:0)

Java中的枚举实际上是类。所以你可以用它们做任何你喜欢的事情,除了一些事情,比如运行时的对象实例化。