Java map.get(map.put(String,boolean)),它的含义是什么?

时间:2014-02-16 17:14:12

标签: java dictionary hashmap

我正在学习教程,并且我遇到了这些说明:

public class WorldController {
    enum Keys {
        LEFT,
        RIGHT,
        JUMP,
        FIRE
    }

    private World world;

    static Map<Keys, Boolean> keys = new HashMap<Keys, Boolean>();
    static {
        keys.put(Keys.LEFT, false);
        keys.put(Keys.RIGHT, false);
        keys.put(Keys.JUMP, false);
        keys.put(Keys.FIRE, false);
    };

    public WorldController(World world) {
        this.world = world;
    }

    // ** Key presses and touches **************** //
    public void leftPressed() {
        keys.get(keys.put(Keys.LEFT, true));
    }
    public void rightPressed() {
        keys.get(keys.put(Keys.RIGHT, true));
    }
    public void jumpPressed() {
        keys.get(keys.put(Keys.JUMP, true));
    }
    public void firePressed() {
        keys.get(keys.put(Keys.FIRE, false));
    }

    public void leftReleased() {
        keys.get(keys.put(Keys.LEFT, false));
    }
    public void rightReleased() {
        keys.get(keys.put(Keys.RIGHT, false));
    }
    public void jumpReleased() {
        keys.get(keys.put(Keys.JUMP, false));
    }
    public void fireReleased() {
        keys.get(keys.put(Keys.FIRE, false));
    }
}

我可以看到方法leftPressed()rightPressed()等等,什么都不返回。是否有任何特殊原因让它立即获得并立即获得价值(不返回)?

2 个答案:

答案 0 :(得分:1)

如果您看到

的文档
V put(K key, V value);

Map类的方法,它表示返回值表示与key关联的先前值,如果没有键映射,则返回null。

所以当你执行say

public void methodAtrue() {
    myMap.get(myMap.put("A", true));
}

您知道您将键“A”的值设置为true。此函数还将返回与键“A”关联的先前值。并且您正在对我们get()的返回值执行boolean(如果在放置之前没有映射,则为null)。

因为你有Map as

 Map<Keys, Boolean> keys = new HashMap<Keys, Boolean>();

您无法使用get(Boolean)。您需要使用get(Keys)

答案 1 :(得分:0)

本教程可能会返回所有这些get方法,因为它们在当前状态下不执行任何操作。

或者,作者正在演示地图的get方法是如何工作的,并且只是显示他们将返回的内容而不对其进行任何操作。