我有一个回调函数,这个函数像这样返回Json
{"user":"user1","message":"test message"}
...
{"user":"user2","message":"test message 2"}
...
我想将这些消息存储在一个ArrayList
中,但我希望用户将它们分开,我会在另一个片段中列出消息。
示例:
用户点击user1,代码列出来自user1的消息 用户单击user2,代码列出来自user2的消息。
如何按用户存储此消息并按用户在Java中列出?
答案 0 :(得分:0)
您可以使用地图。
Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
ArrayList<String> messages1 = new ArrayList<String>();
messages1.add("message11");
messages1.add("message12");
map.put("user1", messages1);
等等。
然后,如果你这样做:
ArrayList<String> messagesOfUser1 = map.get("user1");
您将收到user1的所有消息。
答案 1 :(得分:0)
解决方案是使用Hashtable
。在Hashtable
中,您可以存储键值对,因此存储用户和消息列表,并从用户名中获取该列表。
示例:
Hashtable<String, List<String>> table = new Hashtable<>();
table.put("user01", Arrays.asList("message01", "message02"));
table.put("user02", Arrays.asList("message03", "message07", "messageABC"));
如果您想要从某个特定用户那里获取消息,请使用:
public List<String> getMessages (String user)
{
return table.get(user);
}
如果用户不存在,则上述功能将返回null
。
编辑:以下是Hashtable
的更通用示例:
// Create your Hashtable
Hashtable<String, List<String>> table = new Hashtable<>();
// First, add the user with an empty List to your Hashtable
table.put("user", new ArrayList<String>());
// Now, add messages to the user
table.get("user").add("message 01");
table.get("user").add("message 02");
// Print all messages from the user
String user = "user";
System.out.println("Messages from user \""+user+"\": "+table.get(user));
答案 2 :(得分:-1)
你可以实现如下:
Map<String, ArrayList<String>> userMessage = new HashMap<String, ArrayList<String>>();
ArrayList<String> messageList = new ArrayList<String>();
messageList.add("message1");
messageList.add("message2");
userMessage.put("user1", messageList);
messageList = new ArrayList<String>();
messageList.add("message1");
messageList.add("message2");
userMessage.put("user2", messageList);
它可能对你有帮助。