Java关联数组

232

我如何在Java中创建和获取像PHP中的关联数组?

例如:

$arr[0]['name'] = 'demo';
$arr[0]['fname'] = 'fdemo';
$arr[1]['name'] = 'test';
$arr[1]['fname'] = 'fname';
15个回答

2
Object[][] data = {
{"mykey1", "myval1"},
{"mykey2", "myval2"},
{new Date(), new Integer(1)},
};

是的,这需要通过键进行迭代搜索值,但如果您需要所有值,这将是最佳选择。


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

0

再深入思考一下,我想提出元组作为处理这个问题的更通用方法。虽然元组不是Java本地支持的数据类型,但我使用Javatuples来提供其他语言中存在的相同功能。以下是如何处理所提出问题的示例:

Map<Pair<Integer, String>, String> arr = new HashMap<Pair<Integer, String>, String>();
Pair p1 = new Pair(0, "name");
arr.put(p1, "demo");

我喜欢这种方法,因为它可以使用提供的 API 类和方法扩展到三元组和其他高阶分组。


0

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


10
如果你查看http://download.oracle.com/javase/1.4.2/docs/api/java/util/Dictionary.html,请注意这个类是(a)抽象的,(b)已经过时。 - Felix Kling

-2
关于PHP注释“不,PHP不会喜欢它”的问题。实际上,除非您设置一些非常严格(对于PHP而言)的异常/错误级别(甚至可能不是这样),否则PHP将继续运行。
默认情况下会发生什么是,访问不存在的变量/超出边界的数组元素会“取消”您正在分配的值。不,那不是null。据我所知,PHP有Perl/C血统。因此,有:未设置和不存在的变量、已设置但为NULL的值、布尔假值,以及标准语言中的其他所有内容。您必须单独测试这些内容,或选择正确的评估内置函数/语法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接