【问题标题】:String Array that contains String Arrays包含字符串数组的字符串数组
【发布时间】:2016-04-09 18:49:15
【问题描述】:

您好,很抱歉这个菜鸟问题。我对我的问题进行了很多搜索,但没有找到与我的问题相关的内容。

所以我有这样的事情:

public static String something [][] = 
{
    {"1","100"},
    {"2","1000"},
    {"3","10000"}
};

public static String somethingelse [][] = 
{
    {"1","100"},
    {"2","1000"},
    {"3","10000"}
};

public static String CATEGORIES[][][] = 
{
    something,
    somethingelse
};

如果可能的话,我当然可以从 CATEGORIES[something].get(1st line) 行返回吗?

我不想使用某些东西[0] 我想使用这样的东西 CATEGORIES.something[0] 我不知道该怎么解释。

提前致谢!

【问题讨论】:

标签: java arrays contains


【解决方案1】:

您可以(但这是一种糟糕的做法):

public static class Categories {
    public String something [][] = {
        {"1","100"},
        {"2","1000"},
        {"3","10000"}
    };

    public String somethingelse [][] = {
        {"1","100"},
        {"2","1000"},
        {"3","10000"}
    };
}

public static final Categories CATEGORIES = new Categories();

【讨论】:

  • 你从静态类创建一个新实例?
  • 糟糕的是让字段公开,而不是创建一个字段保持状态的类。类本身可以是私有的,这样就不那么糟糕了。
  • @Bálint 你在abstract 上课吗?它是一个公共的嵌套静态类。当然你可以创建一个新的实例。
  • @JBNizet 你能在其他班级打电话给CATEGORIES.something[0]吗?
  • 不,你不能。我错误地假设常量是私有的。
【解决方案2】:

您可以使用带有键值对的 HashMap 作为列表的名称和这样的数组列表:

HashMap<String, ArrayList<String>> c = new HashMap<>();
ArrayList<String> s = new ArrayList<>();
s.put("HI");
s.put("HELLO");
ArrayList<String> s2 = nee ArrayList<>();
s2.put("HI Again!");
s2.put("Hello Again");
c.put("something", s);
c.put("something2", s2);

然后你可以访问它们

c.get("something").get(0);

注意:很抱歉给变量名带来不便,我正在打电话。

【讨论】:

  • 感谢您的回答,但看起来有点混乱
  • @HellDev 查看 oracle 的集合教程docs.oracle.com/javase/tutorial/collections
  • 感谢您的解释,我明天会检查您的代码,看看它是否符合我的要求并回复您。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2015-04-11
  • 2014-10-18
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
相关资源
最近更新 更多