这可能是一个非常基本的问题,但我不习惯使用Java,我想创建一个像这样的数组/列表:
6546:{
"Ram":{
24M,
4M,
64M,
...
},
"Cpu":{
2%,
4%,
6%,
...
},
...
}
我一直在尝试使用LinkedList
等等,但最终会创建列表列表并开始看起来非常难看。
这是JSON,PHP甚至Javascript中非常常见的数组,使用Java创建它的最佳方法是什么?
答案 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类型。