将PHP数组数据结构移植到Java中

时间:2013-07-18 15:41:58

标签: java arrays data-structures

我正在使用PHP中的这个数据结构

Array
(
    [leigh@bla] => Array
    (
        [chat1] => Array
            (
                [0] => Array
                    (
                        [0] => 0
                        [1] => hi
                        [2] => 123213312
                    )

            )

        [chat2] => Array
            (
                [0] => Array
                    (
                        [0] => 0
                        [1] => whatever?
                        [2] => 123213312
                    )

                [1] => Array
                    (
                        [0] => 1
                        [1] => ok
                        [2] => 23123213
                    )

            )

    )

    [nelson@bla] => Array
    (
        [chat1] => Array
            (
                [0] => Array
                    (
                        [0] => 1
                        [1] => hello
                        [2] => 1232132123
                    )

            )

    )

)

这是PHP代码:

<?php
$arrTemp['leigh@bla']['chat1'][] = array(0, 'hi', '123213312');
$arrTemp['leigh@bla']['chat2'][] = array(0, 'whatever?', '123213312');
$arrTemp['leigh@bla']['chat2'][] = array(1, 'ok', '23123213');

$arrTemp['nelson@bla'] =  array('chat1'=>array(array(1, 'hello', '1232132123')));

echo '<pre>';

print_r($arrTemp);

我正在尝试将此结构存储在Java中。但努力寻找合适的类型,我尝试过ArrayList&gt;在Java中存储这种结构的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

外部结构似乎是一个关联数组(关键是“leigh”),所以对于那个级别你需要一个(Hash)Map(java中没有关联数组,Map是等价的)。

里面似乎是一个列表列表,其中包含3个原子值(让我们称之为a,b和c)的结构,看起来像IntegerString,{ {1}}。

这3个值的简单容器如下所示:

Integer

并代表你的结构:

class InnerStructure {
  Integer a, c;
  String b;
}

请注意,Map<String, List<List<InnerStructure>>> wholeStructure; Map仅为接口,其实现为ListHashMapLinkedList

模仿你的php代码来填充这个结构:

ArrayList

当然,我强烈建议您不要只使用无名列表,而是找到描述此层次结构的实际用途的名称或术语。然后为这些类创建类并将列表聚合到这些类中,这使得它更易于阅读,类型安全并且不那么痛苦。