如何在Java中创建和获取关联数组,就像在PHP中一样?

例如:

$arr[0]['name'] = 'demo';
$arr[0]['fname'] = 'fdemo';
$arr[1]['name'] = 'test';
$arr[1]['fname'] = 'fname';

当前回答

实际上Java支持关联数组,它们被称为字典!

其他回答

你可以通过地图来实现。类似的

Map<String, String>[] arr = new HashMap<String, String>[2]();
arr[0].put("name", "demo");

但是当你开始使用Java时,我相信你会发现,如果你创建一个代表你的数据的类/模型将是你最好的选择。我会这么做

class Person{
String name;
String fname;
}
List<Person> people = new ArrayList<Person>();
Person p = new Person();
p.name = "demo";
p.fname = "fdemo";
people.add(p);

Java中的关联数组与PHP中的类似:

SlotMap hmap = new SlotHashMap();
String key = "k01";
String value = "123456";
// Add key value
hmap.put( key, value );

// check if key exists key value
if ( hmap.containsKey(key)) {
    //.....        
}

// loop over hmap
Set mapkeys =  hmap.keySet();
for ( Iterator iterator = mapkeys.iterator(); iterator.hasNext();) {
  String key = (String) iterator.next();
  String value = hmap.get(key);
}

更多信息,请参见类SoftHashMap: https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/util/SoftHashMap.html

Java不支持关联数组,但是可以使用Map轻松实现。例如,

Map<String, String> map = new HashMap<String, String>();
map.put("name", "demo");
map.put("fname", "fdemo");
// etc

map.get("name"); // returns "demo"

更准确的例子(因为你可以用任何符合你需要的对象替换String)应该声明:

List<Map<String, String>> data = new ArrayList<>();
data.add(0, map);
data.get(0).get("name"); 

有关更多信息,请参阅官方文档

在JDK 1.5 (http://tinyurl.com/3m2lxju)中甚至有一个注释:“注意:这个类已经过时了。新的实现应该实现Map接口,而不是扩展这个类。” 问候,N。

关于PHP评论“不,PHP不会喜欢它”。实际上,除非您设置了一些非常严格的异常/错误级别(甚至可能没有设置),否则PHP将继续运行。

默认情况下,访问一个不存在的变量/越界数组元素会“取消”你正在赋值的值。NO,它不是空的。据我所知,PHP继承了Perl/C。所以有:未设置和不存在的变量,值是设置但为NULL,布尔值为False,还有标准语言中所有的东西。你必须分别测试这些,或者选择正确的函数/语法内建的计算。