Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的列表变量_Java_List_Boolean - Fatal编程技术网

Java中的列表变量

Java中的列表变量,java,list,boolean,Java,List,Boolean,好吧,也许不是正确的标题,但我是这么想的。我正在寻找一种通过一组变量循环的方法。例如,我想在我的游戏中会有一系列你可以解锁的东西,当你输入“unlocked”或其他东西时,它会显示你解锁了什么,并且只显示你解锁了什么。因此,它只会显示为假的布尔值。只需使用一个: 在Java中,没有简单的方法可以根据变量名获取变量。但是,您可以将所有变量存储在HashMap中。这将实现你想要的 HashMap<String, Boolean> vars = new HashMap<>();

好吧,也许不是正确的标题,但我是这么想的。我正在寻找一种通过一组变量循环的方法。例如,我想在我的游戏中会有一系列你可以解锁的东西,当你输入“unlocked”或其他东西时,它会显示你解锁了什么,并且只显示你解锁了什么。因此,它只会显示为假的布尔值。

只需使用一个:


在Java中,没有简单的方法可以根据变量名获取变量。但是,您可以将所有变量存储在
HashMap
中。这将实现你想要的

HashMap<String, Boolean> vars = new HashMap<>();
vars.put("test1", true); // to make a new variable
vars.get("test1"); // to get a variable's value

如果您想进一步了解Java中的映射,有一个全面的教程。

您可以使用一个方法返回一组具有假值的键。根据你的要求(如果是家庭作业之类的),有几种方法可以做到这一点。如果只需要使用原语,您可以执行以下操作

public List<String> getUnlockedItems(Map<String, Boolean> map) {
    // map validation (not null, has entries, etc)
    final List<String> unlockedEntries = new ArrayList<>();
    for (Map.Entry<String, Boolean> entry : map.entries()) {
        if (entry.getValue() == true) {// if it has been unlocked
            unlockedEntries.add(entry.getKey());
        }
    }
    return unlockedEntries;
}

public static void main(String[] args) {
    Map<String, Boolean> unlockables = new HashMap<>();
    unlockables.put("Fire Punch", false);
    unlockables.put("Ice Punch", false);
    unlockables.put("Mega Punch", false);
    unlockables.put("Thunder Punch", false);

    // Player unlocks Fire Punch
    unlockables.put("Fire Punch", true);

    // Get list of unlockables they have unlocked
    List<String> unlockedItems = getUnlockedItems(unlockables); // returns ["Fire Punch"]
}
public class Unlockable {

    public Unlockable(String name) {
        // name validation
        this.name = name;
    }

    public void unlock() {
        unlocked = true;
    }

    public boolean isUnlocked() {
        return unlocked;
    }

    private String name;
    private boolean unlocked;
}
public List<Unlockable> getUnlockedItems(List<Unlockable> unlockables) {
    List<Unlockable> unlockedItems = new ArrayList<>();
    for (Unlockable unlockable : unlockables) {
        if (unlockable.isUnlocked()) {
            unlockedItems.add(unlockable);
        }
    }
    return unlockedItems;
}

    public static void main(String[] args) {
    Unlockable firePunch = new Unlockable("Fire Punch");
    Unlockable icePunch = new Unlockable("Ice Punch");
    Unlockable megaPunch = new Unlockable("Mega Punch");
    Unlockable thunderPunch = new Unlockable("Thunder Punch");

    List<Unlockable> unlockables = new ArrayList<>();
    unlockables.add(firePunch);
    unlockables.add(icePunch);
    unlockables.add(megaPunch);
    unlockables.add(thunderPunch);

    // Player unlocks Fire Punch
    firePunch.unlock();

    // Get list of unlockables they have unlocked
    List<Unlockable> unlockedItems = getUnlockedItems(unlockables); // returns ["Fire Punch"]
}
然后像

public List<String> getUnlockedItems(Map<String, Boolean> map) {
    // map validation (not null, has entries, etc)
    final List<String> unlockedEntries = new ArrayList<>();
    for (Map.Entry<String, Boolean> entry : map.entries()) {
        if (entry.getValue() == true) {// if it has been unlocked
            unlockedEntries.add(entry.getKey());
        }
    }
    return unlockedEntries;
}

public static void main(String[] args) {
    Map<String, Boolean> unlockables = new HashMap<>();
    unlockables.put("Fire Punch", false);
    unlockables.put("Ice Punch", false);
    unlockables.put("Mega Punch", false);
    unlockables.put("Thunder Punch", false);

    // Player unlocks Fire Punch
    unlockables.put("Fire Punch", true);

    // Get list of unlockables they have unlocked
    List<String> unlockedItems = getUnlockedItems(unlockables); // returns ["Fire Punch"]
}
public class Unlockable {

    public Unlockable(String name) {
        // name validation
        this.name = name;
    }

    public void unlock() {
        unlocked = true;
    }

    public boolean isUnlocked() {
        return unlocked;
    }

    private String name;
    private boolean unlocked;
}
public List<Unlockable> getUnlockedItems(List<Unlockable> unlockables) {
    List<Unlockable> unlockedItems = new ArrayList<>();
    for (Unlockable unlockable : unlockables) {
        if (unlockable.isUnlocked()) {
            unlockedItems.add(unlockable);
        }
    }
    return unlockedItems;
}

    public static void main(String[] args) {
    Unlockable firePunch = new Unlockable("Fire Punch");
    Unlockable icePunch = new Unlockable("Ice Punch");
    Unlockable megaPunch = new Unlockable("Mega Punch");
    Unlockable thunderPunch = new Unlockable("Thunder Punch");

    List<Unlockable> unlockables = new ArrayList<>();
    unlockables.add(firePunch);
    unlockables.add(icePunch);
    unlockables.add(megaPunch);
    unlockables.add(thunderPunch);

    // Player unlocks Fire Punch
    firePunch.unlock();

    // Get list of unlockables they have unlocked
    List<Unlockable> unlockedItems = getUnlockedItems(unlockables); // returns ["Fire Punch"]
}
公共列表getUnlockdItems(列表可解锁项){
List unlockditems=new ArrayList();
用于(可解锁可解锁:可解锁){
if(unlockable.isUnlocked()){
unlockdems.add(可解锁);
}
}
返回解锁项;
}
公共静态void main(字符串[]args){
可解锁的firePunch=新的可解锁(“Fire Punch”);
可解锁的icePunch=新的可解锁(“Ice Punch”);
可解锁的超级穿孔=新的可解锁(“超级穿孔”);
可解锁的thunderPunch=新的可解锁(“thunderPunch”);
List unlockables=new ArrayList();
解锁。添加(firePunch);
解锁。添加(icePunch);
可解锁。添加(megaPunch);
解锁。添加(thunderPunch);
//玩家解锁火击
firpunch.unlock();
//获取已解锁的可解锁项列表
List unlockditems=getunlockditems(unlockables);//返回[“Fire Punch”]
}

即使这是难以置信的非正统做法——你希望用户能够查询变量,这不是一个好兆头——是不是他们总是询问你的类的特定变量?这毫无意义。您有两个同名的变量。但也许您需要使用java反射,为什么要对此进行否决?除了缺少的泛型之外,很明显为什么要编辑以删除菱形运算符?仅仅说“只使用X”而不带任何上下文说明为什么X更好是没有帮助的。你很可能是对的,但你不必费心解释原因。这就是您缺少的。您需要将
作为
对象
,这样您就可以获得任何类型的值。然后,您将能够检查映射中的所有值,并询问:
if(m.get()instanceof Boolean){…}
我需要一种方法让它只说布尔值是真的。我也不能这样做:布尔test1=false;System.out.println(“test1是”+test1);它只是稍微慢了一点。HashMaps非常快速,这是真的。我在想,与使用
JavaScript
相比,它可能会慢一些,但这与Java无关。
public List<Unlockable> getUnlockedItems(List<Unlockable> unlockables) {
    List<Unlockable> unlockedItems = new ArrayList<>();
    for (Unlockable unlockable : unlockables) {
        if (unlockable.isUnlocked()) {
            unlockedItems.add(unlockable);
        }
    }
    return unlockedItems;
}

    public static void main(String[] args) {
    Unlockable firePunch = new Unlockable("Fire Punch");
    Unlockable icePunch = new Unlockable("Ice Punch");
    Unlockable megaPunch = new Unlockable("Mega Punch");
    Unlockable thunderPunch = new Unlockable("Thunder Punch");

    List<Unlockable> unlockables = new ArrayList<>();
    unlockables.add(firePunch);
    unlockables.add(icePunch);
    unlockables.add(megaPunch);
    unlockables.add(thunderPunch);

    // Player unlocks Fire Punch
    firePunch.unlock();

    // Get list of unlockables they have unlocked
    List<Unlockable> unlockedItems = getUnlockedItems(unlockables); // returns ["Fire Punch"]
}