Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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中更好地跟踪索引(与Python相比)_Java_Python_Dictionary_Map - Fatal编程技术网

如何在java中更好地跟踪索引(与Python相比)

如何在java中更好地跟踪索引(与Python相比),java,python,dictionary,map,Java,Python,Dictionary,Map,在python中,您可以在列表中存储各种类型的不同项,但是必须通过它们各自的索引或列表方法来访问它们 使用python字典,您可以将键映射到项,这样就不必不断地记住哪个索引包含哪个项 Python字典非常容易编写: mydic = {"item1":True, "item2":True, "item3":True} 而且也易于访问: if mydic["item1"]: localvar = mydic["item1"] mydic["item1"] = False 同样,在

在python中,您可以在列表中存储各种类型的不同项,但是必须通过它们各自的索引或列表方法来访问它们

使用python字典,您可以将键映射到项,这样就不必不断地记住哪个索引包含哪个项

Python字典非常容易编写:

mydic = {"item1":True, "item2":True, "item3":True}
而且也易于访问:

if mydic["item1"]:
    localvar = mydic["item1"]
    mydic["item1"] = False
同样,在Java中,我也尝试做同样的事情,尽管我发现它要复杂得多:

//this program assumes the creation of a class and method//
HashMap<String, Boolean> mydic = new HashMap<String, Boolean>();
mydic.put("item1", false); mydic.put("item2", false); mydic.put("item3", false);
现在我不想比较语言,如果我这样做了,老实说,Java可能会赢。但是,创建项和值的hashmap,然后将它们转换回布尔值,然后添加和删除以将值更改为true,似乎会适得其反

现在对于布尔型,我知道可以选择位集,但是如果这些项有三种可能,而不是两种,即开/中和/关呢

我还考虑了传递变量并与列表协调的可能性 (在python中看起来像这样)

我甚至不确定你是否能使用这个语法 itemlist[item1]=False 在java中。然而,我最关心的是内存需求和做事的方式 这对java来说最有意义


欢迎任何和所有输入,

是的,Java的语法在这方面比Python的语法更详细。
这里没有什么真正的答案。事情就是这样

这是Java世界中非常好的/标准的编码方式。我没有
看看它有什么问题,或者这里有什么可以简化的地方

//this program assumes the creation of a class and method//
HashMap<String, Boolean> mydic = new HashMap<String, Boolean>();
mydic.put("item1", false); mydic.put("item2", false); mydic.put("item3", false);
//此程序假定创建一个类和方法//
HashMap mydic=新HashMap();
mydic.put(“第1项”,假);mydic.put(“第2项”,假);mydic.put(“第3项”,假);
关于你的这封信

此程序假定创建一个类和方法


。。。每个Java程序都至少有一个类和一个方法,所以这也很好。

似乎可以在声明中使用菱形语法:

Map<String, Boolean> mydic = new HashMap<>();
mydic.put("item1", false);
mydic.put("item2", false);
mydic.put("item3", false);

不确定
localvar
在做什么。

为什么要将
Boolean
强制转换为
Boolean
?没有强制转换,我得到的错误类型是hashmap。你一定在做一些不同的事情。我是从一个对象访问它的,比如object.mydic.get()你漏掉了一个右引号,你不能将0赋值给布尔值!我觉得必要的语法违背了我使用java哈希映射的目的。我应该使用列表并以其他方式跟踪索引吗?不,我认为不是。如果您想在给定特定字符串值的情况下对布尔值进行固定时间访问,那么HashMap将字符串映射到布尔值也会更好、更简单。你的方法很好。您刚刚习惯了不太详细的Python语法,但用Java术语来说,这段代码很好。local var是专门用于强制转换的,在我的程序中,它是从一个对象(即object.get()调用的,而我收到的错误表明它是类型hashmap@stackoverflow101对不起,我不明白。Eclipse抱怨说如果(mydic.get(“item1”){是非法的,因为它是hashmap类型,并且需要是list类型。我只能假设我得到了这个错误,因为在我的程序上下文中,它可能是(object.mydic.get(“item1”){。我不知道你所说的
对象是什么意思。
。这是有效的语法。你的泛型可能有一些问题。
//this program assumes the creation of a class and method//
HashMap<String, Boolean> mydic = new HashMap<String, Boolean>();
mydic.put("item1", false); mydic.put("item2", false); mydic.put("item3", false);
Map<String, Boolean> mydic = new HashMap<>();
mydic.put("item1", false);
mydic.put("item2", false);
mydic.put("item3", false);
if (mydic.get("item1")) {
    mydic.put("item1", false);
}