1

我正在使用 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> 等。在 Java 中存储这种结构的最佳方式是什么?

4

1 回答 1

1

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

里面似乎是一个列表列表,里面有一些结构,它包含 3 个原子值(我们称它们为 a、b 和 c),看起来像Integer, String, Integer

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

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

并代表您的结构:

Map<String, List<List<InnerStructure>>> wholeStructure;

请注意,MapandList只是接口,它们的实现是HashMapand LinkedListor ArrayList

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

Map<String, List<List<InnerStructure>>> wholeStructure = new HashMap<String, List<List<InnerStructure>>>();
List<List<InnerStructure>> outerList = new ArrayList<List<InnerStructure>>();
List<InnerStructure> innerList = new ArrayList<InnerStructure>();

InnerStructure innerData = new InnerStructure();
innerData.a = 1;
innerData.b = "hello";
innerData.c = 1232132123;

innerList.add(innerData);
outerList.add(innerList);

wholeStructure.put("leigh", outerList);

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

于 2013-07-18T15:49:47.130 回答