Java 编写包含大量数据的if语句的更好方法||

Java 编写包含大量数据的if语句的更好方法||,java,if-statement,Java,If Statement,我想知道是否有一种更优雅的方法可以用java编写包含大量| |的if语句。 我给字母表中的字母赋予了不同的值: A,O,I,B,T,S,M,N -> 1 C,D,F,G -> 5 W,Y,Z,H,Q -> 10 所以,我想检查一个给定的字母,如果它等于第二组中的一个,例如,得到5。 现在我这样检查: String value; if (getLetter().equals("Α")|| getLetter().equals("O") ||

我想知道是否有一种更优雅的方法可以用java编写包含大量| |的if语句。 我给字母表中的字母赋予了不同的值:

A,O,I,B,T,S,M,N -> 1 
C,D,F,G         -> 5 
W,Y,Z,H,Q       -> 10
所以,我想检查一个给定的字母,如果它等于第二组中的一个,例如,得到5。 现在我这样检查:

String value;
if (getLetter().equals("Α")|| getLetter().equals("O") ||
    getLetter().equals("I") || getLetter().equals("B") ||
    getLetter().equals("T") || getLetter().equals("S") ||
    getLetter().equals("N") || getLetter().equals("N"))
value = "1";
有更好的方法吗?

三个选项:

使用switch语句,假设您使用的是Java 7或Java 8:

switch (getLetter()) {
    case "A":
    case "O":
    case "I":
    case "B":
    ...
        value = "1";
    ...
}
使用三个集合对象

最好是用地图 最后一个选项类似于:

// You'd presumably initialize this in one place...
Map<String, String> map = new HashMap();
map.put("A", "1");
map.put("O", "1");
map.put("I", "1");
...
map.put("C", "5");
map.put("D", "5");
...

String value = map.get(getLetter());
三种选择:

使用switch语句,假设您使用的是Java 7或Java 8:

switch (getLetter()) {
    case "A":
    case "O":
    case "I":
    case "B":
    ...
        value = "1";
    ...
}
使用三个集合对象

最好是用地图 最后一个选项类似于:

// You'd presumably initialize this in one place...
Map<String, String> map = new HashMap();
map.put("A", "1");
map.put("O", "1");
map.put("I", "1");
...
map.put("C", "5");
map.put("D", "5");
...

String value = map.get(getLetter());
您可以根据需要创建一个HashMap

HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("A",1);
hm.put("B",1);
hm.put("O",1);
hm.put("I",1);
....
hm.put("C",5);
hm.put("D",5);
...
您可以根据需要创建一个HashMap

HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("A",1);
hm.put("B",1);
hm.put("O",1);
hm.put("I",1);
....
hm.put("C",5);
hm.put("D",5);
...
不是最优的,但简短、清晰、自我解释


不是最优的,而是简短、清晰和自我解释。

将所有元素a、O、I等放在一个列表中,并使用包含方法列表。containsGetLetter将所有元素a、O、I等放在一个列表中,并使用包含方法列表。containsGetLetterow,我不从这个角度思考,喜欢这样:我也更喜欢这样,简单,代码更少。谢谢。哇,我没有从这个角度思考,所以我喜欢这个:我也喜欢这个,简单,代码少,方式。谢谢