【问题标题】:Using string as index of a MultiDimensional Array in JAVA在 JAVA 中使用字符串作为多维数组的索引
【发布时间】:2013-04-20 03:05:57
【问题描述】:

我是 Java 新手,所以对它了解不多。当我在 Java 中发现一些非常令人沮丧的东西时,我正在使用 Array。

我有一个字符串数组,我希望索引是一个字符串。例如

String[][] a = new String[][]{};
a['person']['name'] = "something";

但是 Java 不允许我这样做。请帮助我解决这个问题或一些解决方法。 谢谢

【问题讨论】:

  • 你不能用arrayarrayList 来做。看看HashTable(或HashMap)类。
  • 我认为您可以使用返回整数值的hashCode(),但使用它进行索引会很麻烦。所以最好试试Map

标签: java android multidimensional-array


【解决方案1】:

您可以简单地使用Map 和用户定义的类作为键:

Map<Category, String> map = new HashMap<>();

Category 可以具有 enum type 等属性,例如 PERSONString 名称字段。

确保覆盖 hashCodeequals 方法以允许比较不同的 Category 对象。

【讨论】:

    【解决方案2】:

    我会使用HashMap,例如,名称作为键,“某物”作为值。

    // Create a HashMap which stores Strings as the keys and values 
    Map<String,String> example = new HashMap<String,String>();
    
    // Adding some values to the HashMap
    example.put( "Wayne", new String( "Rooney" ));
    example.put( "Alan", new String( "Shearer" ));
    example.put( "Rio", new String( "Ferdinand" ));
    example.put( "John", new String( "Terry" )); 
    
    // Find out how many key/value pairs the HashMap contains
    System.out.println("The HashMap contains " + example.size() + " pairs");
    

    遍历地图:

    for (String key : example.keySet() ) {
        // Get the String value that goes with the key 
        String value = example.get( key );
    
        // Print the key and value
        System.out.println( key + " = " + value); 
     } 
    

    更多信息here

    【讨论】:

      【解决方案3】:

      你可以试试地图地图:

      Map<String, Map<String, V>> map = //...
      //...
      
      map.get("person").get("name");
      

      【讨论】:

      • 嘿,有没有可能做这样的事情。 `map.put("name","xxx"); map.put("person",map1.put("name","xxx"));'因为有时我可以放字符串,有时可以放地图。
      • 不,如果 map 被定义为 Map 的 Map 是不可能的(在第一个语句中),那么你将字符串作为键和值。
      猜你喜欢
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      相关资源
      最近更新 更多