对于Web服务的开发,我必须按如下方式制作多级关联数组
Array
(
[0] => Array
(
[id] => 1100
[content] => This is content
[creator_info] => Array
(
[id] => 1
[fname] => abc
[lname] => xyz
)
[tag_info] => Array
(
[0] => Array
(
[id] => 3
[name] => my
)
[1] => Array
(
[id] => 4
[name] => you
)
[2] => Array
(
[id] => 5
[name] => your
)
)
[created_date] => 14 JAN 2012
)
[1] => Array
(
[id] => 1101
[content] => This is content1
[creator_info] => Array
(
[id] => 2
[fname] => abc1
[lname] => xyz1
)
[tag_info] => Array
(
[0] => Array
(
[id] => 35
[name] => wer
)
[1] => Array
(
[id] => 47
[name] => cvb
)
[2] => Array
(
[id] => 51
[name] => mnv
)
)
[created_date] => 15 JAN 2012
)
)
with referencing这个问题,我正在使用ArrayList
。
如下
Java没有像PHP这样的关联数组。
您正在做的事情有各种解决方案,但这取决于您希望如何查找信息。您可以轻松编写一个包含所有信息的类,并将它们的实例存储到ArrayList中。
public class Foo{
public String name, fname;
public Foo(String name,String fname){
this.name=name;
this.fname=fname;
}
}
然后......
List<Foo> foos = new ArrayList<Foo>();
foos.add(new Foo("demo","fdemo");
foos.add(new Foo("test","fname");
所以你可以像......一样访问它们。
foos.get(0).name;
=> "demo"
这让我对单级感到高兴。如果我继续使用它,这看起来像一个复杂的过程。
我想要一些高速的简单程序。
最近3天我在工作,我获得了成功跟随
Map<String,Object> myMap1 = new HashMap<String, Object>();
List<Map<String , Object>> myMap = new ArrayList<Map<String,Object>>();
Map<String,String> user_info = new HashMap<String, String>();
user_info.put("fname", "xyz");
user_info.put("lname", "pqr");
myMap1.put("id", 20);
myMap1.put("content", "This is content");
myMap1.put("creator_info", user_info);
myMap1.put("timestamp", "11 Jan 2012");
myMap.add(0,myMap1);
还没有明白如何为tags_info
这个东西有没有库??
答案 0 :(得分:5)
Java确实有一些关联数组。它们被称为Maps(请参阅java.util.Map的实现)。使用map,您可以将值与键相关联,例如
Map<String, String> mymap = new HashMap<String, String>();
mymap.put("one", "1");
mymap.put("two", "2");
// etc.
因此,要解决您的问题,您可以创建复杂的数据结构,它是数组,列表(请参阅java.util.List)和地图的组合。
但是你的结构看起来太复杂了,不容易管理。所以,你的建议很好。创建像Foo这样的类,可能会创建另一个包含多个Foo实例等的类。
答案 1 :(得分:1)
我知道这已经过时了,但我觉得我只需要回复其他读这篇文章的人。 Java是面向对象的语言,因此请根据“对象”来考虑您的数据结构。忘记PHP引导开发人员创建的深层数组结构。
当从PHP这样的语言转向Java时,你必须保留“PHP”的做事方式并拥抱对象。
public class Content {
String content;
int id;
List<Tag> getTags() {...}
List<Creator> getCreators() {...}
}
public class Tag {
int id;
String name;
}
public class Creator {
String fname;
String lname;
}
例如,在使用对象时,请执行以下操作...
List<Creator> creators = content.getCreators();
List<Tag> tags = content.getTags();