我想为字符串分配一个int值,这样 如果
“苹果” = 1,“香蕉” = 2
我可以做类似的事情
intToStr(1)=“苹果”
或
StrToInt(“香蕉”)= 2
我知道我可以使用switch语句来做到这一点,但是我听说使用太多switch语句并不理想。使用一堆switch语句可以吗?如果没有,那么进行这种映射的最佳方法是什么?
答案 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)
有多种工具可以解决此问题,具体取决于上下文:
您已经建议的switch
语句。
一个enum
。
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());
}
}
}