用Java创建多数组

时间:2014-02-27 17:37:58

标签: java

这可能是一个非常基本的问题,但我不习惯使用Java,我想创建一个像这样的数组/列表:

6546:{
    "Ram":{
         24M,
         4M,
         64M,
         ...
    },

    "Cpu":{
         2%,
         4%,
         6%,
         ...
    },
    ...
}

我一直在尝试使用LinkedList等等,但最终会创建列表列表并开始看起来非常难看。

这是JSON,PHP甚至Javascript中非常常见的数组,使用Java创建它的最佳方法是什么?

5 个答案:

答案 0 :(得分:1)

您需要List<List<Integer>>int[][]

List<List<Integer>> list = new ArrayList<>();
list.add(new ArrayList<>());
list.get(0).add(24);

但也许您只想使用类似Gson的内容并将其存储为JSON。

或者创建一个类:

class Data {
    private final List<Integer> ram = new ArrayList<>();
    private final List<Integer> cpu = new ArrayList<>();
}

或者,如果您想避免创建类? (你不应该这样做)

Map<String, List<Integer>> map = new HashMap<>();
map.put("cpu", new ArrayList<>());
map.put("ram", new ArrayList<>());

答案 1 :(得分:0)

您可以定义的数组数组,如String[][]

答案 2 :(得分:0)

可能会以这种方式完成。

int[][] twoDimTable = new int[size][size];
String[][] twoDimTable = new String[size][size];

or
List<List<Integer> list = new ArrayList<>(); //or
List<List<String> list = new ArrayList<>();

答案 3 :(得分:0)

HashMap<Integer, HashMap<String, List<Object>>>看起来不错。

答案 4 :(得分:0)

这看起来更像是键/值索引结构。

用Java做同等事情的一种方法(

Map<Integer, Map<String, String[]>> myData = new Hashtable<Integer, Map<String, String[]>>();
Map<String, String[]> entries = new Hashtable<String, String[]>();

entries.put("Ram", new String[] {"24M", "4M"}); // etc.
entries.put("Cpu", new String[] {"2%", "4%"}); // etc.

myData.put(6546, entries);

这将创建一个等效的数据结构,您可以用熟悉的方式对其进行索引:

myData.get(6546).get("Ram")[0];

虽然这种格式很糟糕,因为在使用.get(x)的结果之前应始终检查空值,例如:

Map<String, String[]> gotEntry = myData.get(6546);
if (gotEntry != null) {
    String[] dataPoints = gotEntry.get("Ram");

    if (dataPoints != null && dataPoints.length > 0) {
        String data = dataPoints[0];
     }
}

等等。希望这有帮助!

另一个更有趣的选择是使用类似描述here的内容,您可以将数据定义为JSON字符串,稍后使用un / marshalling将其转换为Object类型。