用Java创建多数组

用Java创建多数组,java,Java,这可能是一个非常基本的问题,但我不习惯使用Java,我想创建如下数组/列表: 6546:{ "Ram":{ 24M, 4M, 64M, ... }, "Cpu":{ 2%, 4%, 6%, ... }, ... } 我一直在尝试LinkedList等等,但最终创建了列表列表,它开始看起来非常难看 这是JSON、

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

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

    "Cpu":{
         2%,
         4%,
         6%,
         ...
    },
    ...
}
我一直在尝试
LinkedList
等等,但最终创建了列表列表,它开始看起来非常难看

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

您想要一个
列表
int[][]

List<List<Integer>> list = new ArrayList<>();
list.add(new ArrayList<>());
list.get(0).add(24);
或者如果您想避免创建类?(你不应该这样做)

Map Map=newhashmap();
put(“cpu”,新的ArrayList());
put(“ram”,新的ArrayList());

数组的数组您可以像-
字符串[][]
那样定义它

List<List<Integer>> list = new ArrayList<>();
list.add(new ArrayList<>());
list.get(0).add(24);
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<>();
int[]twoDimTable=newint[size][size];
字符串[][]twoDimTable=新字符串[size][size];
或

列表
HashMap
看起来不错。

这看起来更像一个键/值索引结构

在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);
尽管这是一种非常糟糕的形式,因为在使用
.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];
     }
}
mapgotentry=myData.get(6546);
if(gotEntry!=null){
String[]dataPoints=gotEntry.get(“Ram”);
if(dataPoints!=null&&dataPoints.length>0){
字符串数据=数据点[0];
}
}
等等。希望这有帮助


另一个更有趣的选项是使用类似于上文所述的内容,您可以将数据定义为JSON字符串,然后使用un/marshalling将其转换为对象类型。

这不是有效的JSON,你想表达什么样的数据结构?@dimo414它只是一个伪代码:)它并不比Java中的列表好多少,sorryJava是一种OO语言。创建您自己的类,而不是尝试创建列表映射列表。@SeanPatrickFloyd根本不同意,但您需要知道您试图表示的是什么结构。您可以像其他语言一样使用
List
s、
Map
s和自定义对象。您能更具体一点吗?(它们是字符串)集合中的集合?坏的practice@solvator为什么?你能多说点什么或者提供一些资源让我们能读到更多关于它的信息吗?糟糕的做法?大概但并非总是如此avoidable@solvator这是错误的,我不知道你从哪里得到这个想法。不,不是。它看起来像一个令人憎恶的东西。但有时这是你必须处理的问题。
myData.get(6546).get("Ram")[0];
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];
     }
}