将字符串分配给int

时间:2019-04-24 17:48:42

标签: java

我想为字符串分配一个int值,这样 如果

“苹果” = 1,“香蕉” = 2

我可以做类似的事情

intToStr(1)=“苹果”

StrToInt(“香蕉”)= 2

我知道我可以使用switch语句来做到这一点,但是我听说使用太多switch语句并不理想。使用一堆switch语句可以吗?如果没有,那么进行这种映射的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

如果数据将是一个常量,也许您可​​以使用枚举,

  enum Fruit {
    APPLE, BANANA, STRAWBERRY,
  }

Arrays.stream(Fruit.values()).forEach( fruit -> System.out.println(fruit.name() + " - " + fruit.ordinal()));

输出:

APPLE - 0
BANANA - 1
STRAWBERRY - 2

如果没有,地图将满足您的要求:

Map<String, Integer> fruits = new HashMap<>();

    fruits.put("APPLE", 1);

    fruits.put("BANANA", 2);

    fruits.put("STRAWBERRY", 3);

    fruits.forEach((x,y)->System.out.println(x + " - " + y));

输出:

APPLE - 1
BANANA - 2
STRAWBERRY - 3

来源:

答案 1 :(得分:0)

有多种工具可以解决此问题,具体取决于上下文:

  1. 您已经建议的switch语句。

  2. 一个enum

  3. Map<String, Integer>

答案 2 :(得分:0)

这里有一些选择。

enum MyEnum {
   Apple(1), Banana(2), Orange(3);
   private int v;

   private MyEnum(int v) {
      this.v = v;
   }

   public int getValue() {
      return v;
   }
}

public class SimpleExample {

   public static void main(String[] args) {
      // You could do it with a Map. Map.of makes an immutable map so if you
      // want to change those values, pass it to a HashMap Constructor

      Map<String, Integer> map = new HashMap<>(Map.of("Apple", 1, "Banana", 2));
      map.entrySet().forEach(System.out::println);

      for (MyEnum e : MyEnum.values()) {
         System.out.println(e + " = " + e.getValue());
      }

   }
}