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)
"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的"合成糖".
归档时间: |
|
查看次数: |
1818 次 |
最近记录: |