到目前为止,我所拥有的:
具有两个文件夹的目录:
.. \ Data \ BeforeModern
.. \ Data \ AfterModern
每个文件夹(BeforeModern和AfterModern)分别有4个JSON文件( AU,UK,US,IND );
Json 文件包含一个我感兴趣的特定字段名(语言)。
例如,在BeforeModern中的AU JSON中,lang是
Language["English","Spanish"]
在AFterModern中,lang就像这样:
Language["English","Spanish","Arabic"]
我要打印如下结果:
**BeforeModern** **AfterModern**
English English
AU : Spanish Spanish
Urdu
直到现在我的方法:
for (File beforeFile: new File(locationPath).listFiles()) {
File afterFile= new File(locationPath.replace("BeforeModern", "AfterModern") + "\\" + locFile.getName());
if (afterfile.exists()) {
ObjectMapper mapper = new ObjectMapper();
JsonNode tree1 = mapper.readTree(beforeFile); //Parse Specific JSON from BeforeModern Location
JsonNode tree2 = mapper.readTree(afterFile); //Parse Specific JSON from AfterModern Location
if (tree1.has("Language") && tree2.has("Language")) {
JsonNode sup_loc = tree1.get("Language");
List<String> list1 = new ArrayList<>();
sup_loc.forEach(l -> list1.add(l.asText()));
JsonNode sup_rent = tree2.get("Language");
List<String> list2 = new ArrayList<>();
sup_rent.forEach(l -> list2.add(l.asText()));
int rows = Math.max(list1.size(), list2.size());
Map<String, String> hash= new HashMap<>();
for (int i=0;i<rows;i++){
hash.put(list1.get(i),list2.get(i));
}
Map<String,Map<String,String>> map = new HashMap<>();
map.put(beforeFile.getName(),hash);
map.entrySet().forEach((k)->System.out.println(k.getKey()+" "+k.getValue()));
//hash.entrySet().forEach((k)->System.out.println(k.getKey()+" "+k.getValue()));
System.out.println("________________________________________________________________________________");
答案 0 :(得分:1)
要在语言列表的中间行上打印AU :
,需要计算中间行的索引。
为了将两个语言名称列表打印为列,您需要在第一列中找到最长的语言名称的长度,该列的标题为**BeforeModern**
。然后,您可以使用类printf()
的方法PrintStream
来确保**AfterModern**
列表也显示为一列。在下面的代码段中,longest
是代表最长语言名称长度的int
,而before
是在第一列中包含语言名称的String
1}}是after
,代表第二列中的相应语言名称。
String
并通过循环打印列表,以便您知道何时打印System.out.printf("%-" + longest + "s %s%n", before, after);
。在下面的代码中,AU :
是一个maxLines
,这是两个语言名称列表中较大者的元素数,而int
是一个包含以下内容的索引的middle
:需要打印int
的行。
AU :