java - 如何以指定格式构造数据?
问题描述
在项目的某个地方,我需要使用 Java 以语法等格式构造数据:
{String: [(int, int),(int, int),...]};
例子:
{"some expression": [(1, 20), (2,15),...]};
我尝试使用地图集合。不知何故,我能够将外部结构格式化为 Map,但在 arraylist 中格式化数据时遇到了麻烦。
HashMap<String, ArrayList> expressionRanges = new HashMap<String, ArrayList>();
如何使用 Java 获取上述示例中指定的结构?
解决方案
我想你可以通过以下任何一种方式来做到这一点:
使用 Map 与 String 作为Key和 2D Integer Array 作为Value:
// Declare the Map
Map<String, int[][]> expressionRanges = new HashMap<>();
// Declare the 2D Integer Arrays and fill them...
int[][] a = {{1, 20}, {2,15}, {3,30}};
int[][] b = {{6, 5}, {7,10}, {8,15}, {9,20},{10,25}};
// Add Integer Arrays to Map as values
expressionRanges.put("Some Expression", a);
expressionRanges.put("Other Expression", b);
// Get 2D Integer Array from Map based on supplied Key string
int[][] tmp = expressionRanges.get("Other Expression");
// Display the contents of the 2D Integer Array
for (int i = 0;i < tmp.length; i++) {
for (int j = 0; j < tmp[i].length; j++) {
System.out.print(tmp[i][j] + "\t");
}
System.out.println();
}
如果运行它会在控制台窗口中显示以下内容:
6 5
7 10
8 15
9 20
10 25
使用 Map 与 String 作为Key和 2D ArrayList 作为Value:
// Declare the Map
Map<String, ArrayList<ArrayList<Integer>>> expressionRanges = new HashMap<>();
// Declare the 2D ArrayLists of Integer Type and fill them...
ArrayList<ArrayList<Integer>> a1 = new ArrayList<>();
ArrayList<Integer> b1 = new ArrayList<>();
b1.add(1);
b1.add(20);
a1.add(b1);
ArrayList<Integer> b2 = new ArrayList<>();
b2.add(2);
b2.add(15);
a1.add(b2);
ArrayList<Integer> b3 = new ArrayList<>();
b3.add(3);
b3.add(30);
a1.add(b3);
ArrayList<ArrayList<Integer>>a2 = new ArrayList<>();
ArrayList<Integer> b4 = new ArrayList<>();
b4.add(6);
b4.add(5);
a2.add(b4);
ArrayList<Integer> b5 = new ArrayList<>();
b5.add(7);
b5.add(10);
a2.add(b5);
ArrayList<Integer> b6 = new ArrayList<>();
b6.add(8);
b6.add(15);
a2.add(b6);
ArrayList<Integer> b7 = new ArrayList<>();
b7.add(9);
b7.add(20);
a2.add(b7);
ArrayList<Integer> b8 = new ArrayList<>();
b8.add(10);
b8.add(25);
a2.add(b8);
// Add ArrayLists to Map as values
expressionRanges.put("Some Expression", a1);
expressionRanges.put("Other Expression", a2);
// Get 2D ArrayList from Map based on supplied Key string
ArrayList<ArrayList<Integer>> values = expressionRanges.get("Other Expression");
// Display the contents of the 2D ArrayList
for(int i = 0; i < values.size(); i++){
for(int j = 0; j < values.get(i).size(); j++){
System.out.print(values.get(i).get(j) + "\t");
}
System.out.println();
}
如果运行它会在控制台窗口中显示以下内容:
6 5
7 10
8 15
9 20
10 25
推荐阅读
- php - Laravel 关系中的记录数
- ruby-on-rails - Ruby:已弃用:如果期望 nil,请使用 assert_nil。这将在 Minitest 6 中失败
- amazon-web-services - AWS TimeStream:超过一天的记录被拒绝
- r - 我应该如何创建具有其他变量条件的新变量?
- jss - JSS - 如何根据 body 元素上的类名创建规则?
- json - 用于在网站上共享办公室详细信息的基于标准的文件格式
- typo3 - tx-news 忽略 gridelement 中的所有 flexform 设置
- php - 类型:错误消息:不在对象上下文中使用 $this
- javascript - 不仅可以看到场景 BG 的折射效果,还可以看到 3D 模型的折射效果
- android - Inkscape SVG 到 Android 矢量