有更清洁的方法吗?
public void change(char x)
{
if(x == 'a')
{
return 'b';
}
else if(x == 'b')
{
return 'a';
}
else if(x == 't')
{
return 'r';
}
else if(x == 'r')
{
return 't';
}
return 'z';
}
我想知道是否有任何内置于Java中的内容,以便我可以像Python中的字典一样交换字符对,或者这是最好的方法吗?
答案 0 :(得分:12)
有人可能会尝试以下方法:
public char change(char x) {
final String dictionary = "abtr";
final String transform = "bart";
int loc= dictionary.indexOf(x);
if (loc < 0) {
return 'z';
} else {
return transform.charAt(loc);
}
}
答案 1 :(得分:11)
嗯,它不会缩短,但至少更好:你可以使用switch
语句而不是if-elseif-elseif-...
构造。
public char change(char x)
{
switch (x) {
case 'a':
return 'b';
case 'b':
return 'a';
case 't':
return 'r';
case 'r':
return 't';
default:
return 'z';
}
}
答案 2 :(得分:7)
“这样我就可以像python中的字典一样交换字符对”
只需使用Map即可。它就像一个Python字典。
Map<Character, Character> likeADict = new HashMap<Character, Character>();
likeADict.put('a','b');
likeADict.get('a');
您可以在运行时添加和删除它。
答案 3 :(得分:2)
另一种很酷的方式是使用枚举,这样就可以轻松添加新的交换值 只需在枚举中添加一个映射
public enum swap{
a('b'),
b('a'),
t('r'),
r('t'),
z('z');
private swap(char c){
this.value=c;
}
public final char value;
}
,用途是:
public char change(char x)
{
swap swapObject = swap.valueOf(Character.toString(x));
return swapObject.value;
}
答案 4 :(得分:0)
你可以使用Map,E.G:
public char change(char x) {
Map <Character, Character> dictionary = new HashMap<Character, Character>() {{
put('a', 'b');
put('b', 'a');
put('t', 'r');
put('r', 't');
}};
if (dictionary.containsKey(x)) {
return dictionary.get(x);
} else {
return 'z';
}
}
但是如果它只是几个字符我就不会打扰。我可能会把字典变成一个类字段。
答案 5 :(得分:-1)
字典技术更灵活但不短(就像java中的每一件事一样)。这是一个完整的例子。
package example;
import java.util.TreeMap;
public class Dictionary {
static final TreeMap<Character,Character> myDict = new TreeMap();
static Character choose(TreeMap<Character,Character> dict,
Character x, Character def) {
Character result = dict.get(x);
if (result==null) result = def;
return result;
}
public static void main(String[] args) {
myDict.put('a','b');
myDict.put('b','a');
myDict.put('r','t');
System.out.println(choose(myDict,'a','z'));
System.out.println(choose(myDict,'b','z'));
System.out.println(choose(myDict,'r','z'));
System.out.println(choose(myDict,'X','z'));
}
}