【问题标题】:Regarding Java Map and Array [closed]关于 Java Map 和 Array [关闭]
【发布时间】:2014-10-24 11:06:38
【问题描述】:

在Javascript中,我们可以编写如下语句。

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

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

在 Java 中是否有任何等价物而不是 Map ?和上面一样吗?

我们可以在java中创建一个字符串数组,如下所示。

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

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

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

【问题讨论】:

  • 使用 HashMap 来执行此操作。 docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
  • 这不是条件语句。它是一个 JavaScript 对象,用作地图。如果您不想使用 Java 的 Map 对象,请告诉我们您想要实现的目标。
  • 您是否真的在寻找switch
  • @khelwood 是的。它可以用 switch 重写,但需要更多的 no。代码行。地图会做得更好:)
  • 如果你想要一个带有[] 表示法的关联数组,那么不。 Java 不支持。

标签: java javascript arrays


【解决方案1】:

那根本不是条件语句。它是 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"

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

  • 采用返回字符串的方法。在方法中添加 switch case 和 返回结果值。
  • 获取数组 ex ({{k,v},{},{}}) 的数组。迭代得到 必填值。

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

您正在比较两种语言的语法,很难使用相同的语法。如果您仍然想找到相同的方式,以下将是最接近的

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

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

【讨论】:

  • 这根本不是 Javascript 映射。它是 Javascript 对象。
  • @Cerbrus 点已被占用。已编辑。
  • 问题是 “在 Java 中是否有任何等价物 instead if Map ?” (我假设他们的意思是“而不是 of ”)。
  • @T.J.Crowder 是的,instead of。更正了:)
  • @Bishan 是的。有多种方法。例如 switch .. 地图将是 AFAIK 最简单的方法。我可以知道你为什么要避开 MAP 吗?
【解决方案2】:

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"

【讨论】:

    【解决方案3】:

    虽然 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
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2014-11-19
        • 1970-01-01
        • 2011-08-18
        • 1970-01-01
        • 1970-01-01
        • 2021-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多