gpt4 book ai didi

java - 如何阅读复杂的 map 和集合

转载 作者:行者123 更新时间:2023-12-01 15:55:05 25 4
gpt4 key购买 nike

在阅读 Map<String, Object>. 形式的 map 时遇到问题这个对象可以是String/PrimitiveWrapper/List/Map。如果对象是一个映射,那么这个映射可以包含一个列表,这个列表可以包含一个映射,......等等。这是第n级。我需要迭代对象并获取值。我尝试了不同的方法但没有成功。碰巧看到下面的帖子,但无法获得所需的输出。

Recursively reading any java Object and pulling out complex types into a hash map

任何人都可以帮助我获得所需的输出吗?我附上了一个示例程序,并显示了示例输出。

第一个输出的简要介绍:
Customers 是 Map-Eight 的键,Customer 是 Map-7 的键。映射七包含数组六,因此键应显示为Customer[index]。 Six[0] 是一个映射五A,其键为Addresses。 FiveA 包含一个 Map-4,其键是地址。四包含列表三,因此四键应显示为Address[index]。三[0]是一个Map-One,键为AddressLine1,其值为1号楼。 所以最终的键和值是:
Customers.Customer[0].Addresses.Address[0].AddressLine1 = House 1

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class StructureReader {

public static void main(String[] args) {
StructureReader reader = new StructureReader();
Map<String, Object> firstData = reader.getFirstData();
// After iterating the first data
// Output should be
// key = value
// Customers.Customer[0].Addresses.Address[0].AddressLine1 = House 1
// Customers.Customer[0].Addresses.Address[1].AddressLine2 = Street 1
// Customers.Customer[1].Name.FirstName = Joe
// Customers.Customer[1].Name.Surname = Bloggs


Map<String, Object> secondData = reader.getSecondData();
// After iterating the second data
// Output should be
// l2Map.l3List[0] = some_string
// l2Map.l3List[1] = 123
// l2Map.l3List[2] = 100.5
// l2Map.l3List[3] =
// l2Map.l3List[4] =
}

private Map getFirstData() {
Map one = new HashMap();
one.put("AddressLine1", "House 1");
Map two = new HashMap();
two.put("AddressLine2", "Street 1");

List three = new ArrayList();
three.add(one); // index 0
three.add(two); // index 1

Map four = new HashMap();
four.put("Address", three);

Map fiveA = new HashMap();
fiveA.put("Addresses", four);

Map fiveB = new HashMap();
fiveB.put("FirstName", "Joe");
fiveB.put("Surname", "Bloggs");

Map fivec = new HashMap();
fivec.put("Name", fiveB);

List six = new ArrayList();
six.add(fiveA); // index 0
six.add(fivec); // index 1

Map seven = new HashMap();
seven.put("Customer", six);

// Final HashMap i.e HashMap<String, Object>
// Now the Object is seven
Map eight = new HashMap();
eight.put("Customers", seven);

return eight;
}


private Map<String, Object> getSecondData() {
Map<String, Object> inputMap = new HashMap<String, Object>();
Map<String, List<Object>> level2Map = new HashMap<String, List<Object>>();
List<Object> level3List = new ArrayList<Object>();
String level4String = "some_string";
Integer level4Integer = 123;
Double level4Double = 100.5d;
List<Object> level4List = new ArrayList<Object>();
Map<String, Object> level4Map = new HashMap<String, Object>();

level3List.add(level4String);
level3List.add(level4Integer);
level3List.add(level4Double);
level3List.add(level4List);
level3List.add(level4Map);

level2Map.put("l3List", level3List);

inputMap.put("l2Map", level2Map);

return inputMap;
}

}

提前致谢。

可汗

最佳答案

你上面提到的例子被称为原始痴迷。您是否尝试过根据您的领域要求设计模型并使用它们,而不是直接使用映射和列表(领域模型可以包含列表或映射作为数据结构)。

关于java - 如何阅读复杂的 map 和集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5241555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com