【问题标题】:Multilevel Associative array in java like phpjava中的多级关联数组,如php
【发布时间】:2012-04-05 21:28:45
【问题描述】:

为了开发 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 做这件事

这个东西有图书馆吗....?

【问题讨论】:

    标签: java collections associative-array


    【解决方案1】:

    Java 确实有某种关联数组。它们被称为地图(参见 java.util.Map 的实现)。使用地图,您可以将值与键相关联,例如

    Map<String, String> mymap = new HashMap<String, String>();
    mymap.put("one", "1");
    mymap.put("two", "2"); 
    // etc.
    

    因此,为了解决您的问题,您可以创建由数组、列表(参见 java.util.List)和映射组合而成的复杂数据结构。

    但是你的结构看起来太复杂了,不容易管理。所以,你的建议很好。创建像 Foo 这样的类,可能创建另一个包含多个 Foo 实例等的类。

    【讨论】:

    • 有没有可以帮助我的图书馆..?我不应该是第一个面临这个问题的人......!有问题我也更新了我的代码,欢迎发表任何评论..
    【解决方案2】:

    我知道这是旧的,但是,我觉得我只需要回复其他阅读此内容的人。 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      相关资源
      最近更新 更多