4

我之前用谷歌搜索过,答案是否定的,但我想知道是否有任何可能的方法。

有没有办法在Java中为二维数组的行和列命名?

4

4 回答 4

7

No you can't. 2D array is just array of arrays. You'll need to have 2 other arrays with names for columns and rows

Probably you can use something different (another data structure like Map) if you need to.

于 2013-07-05T09:49:18.053 回答
5

更多维数组通常是避免类的方法。例如:

String[][] persons;
persons[0][1];

如果您遇到这样的代码,您应该首先使其更具可读性。

public static final int FIRSTNAME = 0;
public static final int LASTNAME = 1;

persons[0][FIRSTNAME];
persons[0][LASTNAME];

封装数据结构的更好方法是类:

public class Person {
  private String firstname;
  private String lastname;

  public String getFirstname(){
     return firstname;
  }

  public String getLastname(){
     return lastname;
  }
}

Person[] persons;
person[0].getFirstname();

或者,如果您希望更改尽可能少:

public class Person {
  public static final int FIRSTNAME = 0;
  public static final int LASTNAME = 1;

  private String[] personData;

  public String getFirstname(){
     return personData[FIRSTNAME];
  }

  public String getLastname(){
     return personData[LASTNAME];
  }
}

做出你的选择

于 2013-07-05T10:04:58.347 回答
1

忘掉关联数组吧。你现在在 Java 中,并采用高级方法 :)
为此 Java 提供了地图。你需要使用地图
这是一个例子

import java.util.*;

public class CollectionsDemo {

   public static void main(String[] args) {
      Map<String ,Integer> m1 = new HashMap<String ,Integer>(); 
      m1.put("name1", 8);
      m1.put("name2", 31);
      m1.put("name3", 12);
      m1.put("name4", 14);
      System.out.println();
      System.out.println(" Map Elements");
      System.out.print("\t" + m1);
   }
}

如果您需要更深入,正如您所说,
is there a way to give names to row and column of a 2D array in Java?
那么需要针对密钥存储数据结构,那么这是可能的。您可以针对密钥存储地图,然后您将其称为多重映射,如下所示

Map<X, Map<Y,Z>> map1;
于 2013-07-05T09:51:02.430 回答
1

看来您的要求是识别行。为此,您可以使用Map由唯一键形成的数组,而不是使用数组。

你可以定义像

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

通过这种方式,您可以放置​​一个可以用作行标识符的键,因为它是唯一的,并添加整个 arrayList 作为其值

于 2013-07-05T09:53:23.883 回答