Java相当于Python字典

时间:2014-02-21 22:27:54

标签: java python dictionary

有更清洁的方法吗?

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中的字典一样交换字符对,或者这是最好的方法吗?

6 个答案:

答案 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'));
    }
}