如何在Java中创建和获取关联数组,就像在PHP中一样?
例如:
$arr[0]['name'] = 'demo';
$arr[0]['fname'] = 'fdemo';
$arr[1]['name'] = 'test';
$arr[1]['fname'] = 'fname';
如何在Java中创建和获取关联数组,就像在PHP中一样?
例如:
$arr[0]['name'] = 'demo';
$arr[0]['fname'] = 'fdemo';
$arr[1]['name'] = 'test';
$arr[1]['fname'] = 'fname';
当前回答
Java等价于Perl的散列
HashMap<Integer, HashMap<String, String>> hash;
其他回答
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接口
这是那个页面上的一个例子。
import java.util.*;
public class Freq {
public static void main(String[] args) {
Map<String, Integer> m = new HashMap<String, Integer>();
// Initialize frequency table from command line
for (String a : args) {
Integer freq = m.get(a);
m.put(a, (freq == null) ? 1 : freq + 1);
}
System.out.println(m.size() + " distinct words:");
System.out.println(m);
}
}
如果使用:
java Freq if it is to be it is up to me to delegate
你会得到:
8 distinct words:
{to=3, delegate=1, be=1, it=2, up=1, if=1, me=1, is=2}
使用ArrayList < Map < String, String > >
下面是一个代码示例:
ArrayList<Map<String, String>> products = new ArrayList<Map<String, String>>();
while (iterator.hasNext()) {
Map<String, String> product = new HashMap<String, String>();
Element currentProduct = iterator.next();
product.put("id",currentProduct.get("id"));
product.put("name" , currentProduct.get("name") );
products.add(product );
}
System.out.println("products : " + products);
输出:
产品:[{id=0001, name=prod1}, {id=0002, name=prod2}]
看看Map接口和具体类HashMap。
创建一个Map:
Map<String, String> assoc = new HashMap<String, String>();
添加一个键值对。
assoc.put("name", "demo");
检索与某个键相关的值。
assoc.get("name")
当然,你可以创建一个map数组,因为这似乎是你想要的:
Map<String, String>[] assoc = ...
在JDK 1.5 (http://tinyurl.com/3m2lxju)中甚至有一个注释:“注意:这个类已经过时了。新的实现应该实现Map接口,而不是扩展这个类。” 问候,N。