gpt4 book ai didi

java - 如何在一行中初始化 HashMap 列表列表?

转载 作者:行者123 更新时间:2023-12-03 07:59:40 27 4
gpt4 key购买 nike

我需要创建一个对象,其中包含 [[{IMEI=49015420323751}]、[{PIN=538000001}]] 之类的值,以便将其转换为 JSON。

现在我正在做的是

        ArrayList<ArrayList<HashMap<String,String>>> Request_Identifiers = new ArrayList<ArrayList<HashMap<String,String>>>();
ArrayList<HashMap<String,String>> list1 = new ArrayList<HashMap<String,String>>();
HashMap<String,String> map1 = new HashMap<String,String>();
map1.put("IMEI","49015420323751");
list1.add(map1);
ArrayList<HashMap<String,String>> list2 = new ArrayList<HashMap<String,String>>();
HashMap<String,String> map2 = new HashMap<String,String>();
map2.put("PIN","538000001");
list2.add(map2);

Request_Identifiers.add(list1);
Request_Identifiers.add(list2);

但我现在需要在 Constructor 中执行此操作(例如如何初始化字符串数组 new String[]{"blocked","suspended","classmask"})或为此编写一个 setter 方法。怎么做 ?我真的很困惑。如果有人能帮助我,我会很高兴。

提前致谢。

编辑:

我需要在 java 中创建一个 JSON 对象来传递 java 中的请求,就像

        {
"attributes": ["blocked", "suspended"],
"authPolicy": ["device_valid"],
"identity": "first_id",
"encoding": "default",
"identifiers":
[
[
{"PIN": "234576"},
{"IMEI": "49015420323751"}
],
[
{"PIN": "68000001"}
]
]
}

所以我在写一个java类,打算用gson转成json格式

        class RequestBody
{
String[] Request_Attributes;
String[] Request_Policies;
String Request_Identity;
String Request_Encoding;
Boolean Auth_Client;
Boolean Handle_429;
ArrayList<ArrayList<HashMap<String,String>>> Request_Identifiers;
public RequestBody()
{
Request_Attributes = new String[]{"blocked","suspended","classmask"};
Request_Policies = new String[]{"bbm_meetings"};
Request_Identity = "first_id";
Request_Encoding = "default";
Auth_Client = true;
Handle_429 = true;
}
}



//System.out.println(RequestBody.Request_Identity);
Gson gson = new Gson();
System.out.println(gson.toJson(new RequestBody()));

我不知道这是否可行,但这是目前解决问题的方法。

抱歉,如果这看起来太简陋,我是编程的初学者。

最佳答案

如果目标只是将其全部放在几行中,您可以使用 double brace / instance initialization .

// Could be one line, but formatted for (some) readability
ArrayList<ArrayList<HashMap<String,String>>> Request_Identifiers = new ArrayList<ArrayList<HashMap<String,String>>>{
{
add(new ArrayList<HashMap<String,String>{{ add( new HashMap<String,String>{{ put("IMEI","49015420323751"); }}; ); }});
add(new ArrayList<HashMap<String,String>{{ add( new HashMap<String,String>{{ put("PIN","538000001"); }}; ); }});
}
};

这显然不是非常可读或可维护的。如果您想提供一种更简单的方法来访问您的数据,请遵循良好的 OO 设计模式并创建 POJO映射到您的模型的数据对象,这将是一种更好的方法。

// handle your arrays/maps internally as part of the constructor
RequestIdentifiers requestIdentifiers = new RequestIdentifiers( "49015420323751", "538000001" );

关于java - 如何在一行中初始化 HashMap 列表列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26660609/

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