Java中的多维数组,如PHP

San*_*kar 3 java data-structures

我想在Java中创建一个多维数组,就像下面的PHP一样.我想创建一个完全相同的数组.可能吗?

Array
(
    [0] => Array
        (
            [name] => sagar
            [company] => Visa
        )

    [1] => Array
        (
            [name] => shloka
            [company] => Doctor
        )

    [2] => Array
        (
            [name] => sanket
            [company] => zon
        )

    [3] => Array
        (
            [name] => kamlesh
            [company] => nsc
        )

    [4] => Array
        (
            [name] => siddhi
            [company] => KES
        )

    [5] => Array
        (
            [name] => sanket
            [company] => zon
        )

    [6] => Array
        (
            [name] => bunty
            [company] => India Bull
        )

    [7] => Array
        (
            [name] => siddhi
            [company] => KES
        )

)
Run Code Online (Sandbox Code Playgroud)

bez*_*max 5

"Java的方式"是制作一个POJO类来存储该信息,如下所示:

class UserInfo {
    private String name;
    private String company;

    public UserInfo(String name, String company) {
        this.name = name;
        this.company = company;
    }

    public String getName() {
        return name;
    }

    public String getCompany() {
        return company;
    }
}

UserInfo[] users = {
    new UserInfo("sagar", "visa"),
    new UserInfo("shloka", "Doctor"),
    ....
};
Run Code Online (Sandbox Code Playgroud)

但是,如果你想要它与PHP中的完全相同,那么你去:

public static Map<String,String> createUser(String name, String company) {
    final Map<String,String> result = new HashMap<String,String>();
    result.put("name",name);
    result.put("company",company);
    return result;
}

List<Map<String,String>> users = new ArrayList<Map<String,String>>();
users.add(createUser("sagar","visa"));
users.add(createUser("shloka","Doctor"));
....
Run Code Online (Sandbox Code Playgroud)

添加:

为了完整答案,这是使用实例初始化器的另一种方法.在某些情况下,它可能看起来比其他解决方案更漂亮,但基本上它有一个缺陷:它使用不必要的permgen空间.不是很多,但它仍然是不需要的:

List<Map<String,String>> result = new ArrayList<Map<String,String>>() {{ 
    add(new HashMap<String,String>() {{
        put("name", "someName");
        put("company", "someCompany");
    }}); 
    add(new HashMap<String,String>() {{
        put("name", "someName1");
        put("company", "someCompany1");
    }}); 
}};
Run Code Online (Sandbox Code Playgroud)

基本上这个解决方案是使用新类覆盖ArrayList(这就是使用permgen的原因),它具有带有附加命令的实例初始化器.每个添加还使用带有实例初始化程序的重写HashMap类.这可能被认为是Java的"合成糖".