声明枚举在数组中使用?

时间:2011-07-17 21:27:35

标签: java arrays enums

对不起,这可能很简单。

我需要一组标志

boolean[20] isTownVisited

但是在它中使用int并不方便,我想使用字符串:

 isTownVisited[Town.Milan] = true;

 return isTownVisited[Town.Rome]

我试图声明枚举

enum Town {Milan, Rome, Florence, Napoli}

但我仍然不能用它来索引我的布尔数组。如何解决这个问题,我可以写一下:

enum Town {Milan = 0, Rome = 1, Florence = 2, Napoli = 3}

4 个答案:

答案 0 :(得分:6)

您可以使用EnumSet。

Set<Town> towns = EnumSet.of(Town.Milan);

towns.add(Town.Rome);

return towns.contains(Town.Napoli);

在bonnet下,EnumMap和EnumSet使用int ordinal(); EnumSet使用位图。

答案 1 :(得分:1)

哎呀...我会用这个:

boolean[Town.values().length] isTownVisited;

isTownVisited[Town.Milan.ordinal] = true;

答案 2 :(得分:0)

你总是可以创建一个声明了所有变量的公共静态类

所以

public class Town{
   public static bool Rome = false;
   // and the rest
}

然后你可以简单地让Town.rome来访问变量......

注意如果要在多个对象中使用这些变量,请不要创建静态变量。

在这种情况下,制作普通变量,然后创建一个新对象并使用该对象的变量

答案 3 :(得分:0)

听起来你需要一张地图而不是一个数组。您可以创建Map<Town, Boolean>,其中Town是枚举,布尔值是该城镇是否已被访问过。