关于Java Map和Array

时间:2014-10-24 11:06:39

标签: java javascript arrays

在Javascript中,我们可以写下如下声明。

var f_names = {
                'a' : 'Apple',                      
                'b' : 'Banana'
                'c' : 'Carrot'
              };

我可以将其称为f_names['c'],并将输出设为Carrot

在Java而不是Map中是否有相同的功能?与上面类似?

我们可以在java中创建一个String数组。

String[] names= { "Apple","Banana", "Carrot" };

然后可以调用names[2],这会将输出返回为Carrot

我正在寻找这样的解决方案。

4 个答案:

答案 0 :(得分:3)

这根本不是条件陈述。这是Javascript对象。在Java中也有Map。

是的,您只是在Java中寻找Map。其中存储了键值对。

Map<String, String> map= new HashMap<String, String>();
map.put("a", "Apple");
map.put("b", "Banana");

你可以检索

String a = map.get("a");// which results "Apple"

更新:如果您正在寻找其他方式

  • 采用返回String的方法。在方法和内部添加开关盒 返回结果值。
  • 取一个数组ex({{k,v},{},{}})数组。迭代得到了 要求的价值。

在您最新评论后更新: JS和Java都是语言。如果JS能够像上面那样实现它(以简单的方式),为什么我们在Java中使用Map。

您正在比较两种语言的语法,使用相同的语法非常不可能。如果你仍想找到相同的方法,下面的内容将是最接近的

HashMap<String, String > map = new HashMap<String, String>(){{
        put("a", "Apple");
        put("b", "Banana");
    }};

不确定你是否接受这种作弊;)

答案 1 :(得分:1)

语法在Java中有点复杂。

要获得最接近的等价物,您可以使用TreeMap,它会对其键进行排序(在这种情况下默认为词典顺序):

Map<String, String> names = new TreeMap<String, String>();
names.put("a", "Apple");
names.put("b", "Banana");
names.put("c", "Carrot");
System.out.println(names);

<强>输出

{a=Apple, b=Banana, c=Carrot}

如果您确实不想使用Map,则可以使用二维array

例如:

String[][] namesArray = new String[][]{{"a","Apple"},{"b","Banana"},{"c","Carrot"}};
System.out.println(Arrays.deepToString(namesArray));

<强>输出

[[a, Apple], [b, Banana], [c, Carrot]]

备注

  • 使用Map的许多优点之一是您可以通过键检索您的值,这可能是您感兴趣的内容。例如:names.get("A")将返回"Apple
  • 使用array,您需要按索引检索您的值。例如,namesArray[1][1]"Banana"

答案 2 :(得分:0)

虽然Map是你真正想要的东西,你也可以使用枚举(我无法帮助那些;我缺乏常规)和公共静态变量:

public final static String a = "Apple";
public final static String b = "Banana";
public final static String c = "Carrot";

然后,他们可以在程序的任何地方进行引用。假设变量位于名为Fruits的类中,它们将被引用为:

Fruits.a
Fruits.b
Fruits.c

答案 3 :(得分:0)

这是一个Javascript对象(Java Script Object Notation),它或多或少像一个键值对。在Java中,这可以通过Map接口实现,并且该接口的大量使用的实现是HashMap。