抱歉提出另一个非常明显的问题
我有一个以下字符串:
{
status=1,
msg=1 out of 2 Transactions Fetched Successfully,
transaction_details=
{2298597={mihpayid=403993715508098532, request_id=NULL, bank_ref_num=NULL, amt=53.77, disc=0.00, mode=CC, PG_TYPE=AXIS, card_no=512345XXXXXX2346, name_on_card=emu, udf2=0, addedon=2013-06-03 17:34:42, status=failure, unmappedstatus=failed, Merchant_UTR=NULL, Settled_At=NULL},
6503939={mihpayid=Not Found, status=Not Found}
}
}
我希望将它们分组到HashMap
或ArrayList
really don't know what to use
,如果给出交易ID ex:2298597 and 6503939
我应该能够获得其他值如status etc
。
我真的不知道怎么回事这就是为什么最终在这里寻求帮助。
请帮我一些输入,或者如果可能,请提供示例代码。
感谢
修改
我设法将所有值放入映射并通过键获取值现在我能够获得如下值:
transaction_details is the key
and Values : {2298597={mihpayid=403993715508098532, request_id=NULL, bank_ref_num=NULL, amt=53.77, disc=0.00, mode=CC, PG_TYPE=AXIS, card_no=512345XXXXXX2346, name_on_card=emu, udf2=0, addedon=2013-06-03 17:34:42, status=failure, unmappedstatus=failed, Merchant_UTR=NULL, Settled_At=NULL}, 6503939={mihpayid=Not Found, status=Not Found}}
现在我必须根据以下交易号码对值进行分组:2298597
我该怎么办?
答案 0 :(得分:1)
创建一个Transactions
课程。拥有所有变量和相应的getter和setter。覆盖您.equals()
和.hashCode()
方法。
至于HashMap
和List
之间的选择,我建议选择HashMap,因为访问存储在HashMap中的数据的复杂性是O(1)。对于List,它是O(N)
答案 1 :(得分:1)
至于我,你应该为你的“字符串”创建一个datacontainer(某种操作响应吗?)并将其放入Map
中,其中键是你想要的值(这里是一些id),map是值只是你的datacontainer对象。
修改强>
Map<String,MagicContainer> myMap=new HashMap<String,MagicContainer>();
MagicContainer message=new MagicContainer(message); // where message is lets say your example string
for(String singleId:message.getTransactionIDs()){
myMap.put(singleId,message);
}
//now you can get your message by one of transactions id
String status=myMap.get("2298597").getStatus();
OFC。您可以在MagicContainer
类中编写逻辑(消息解析和getter + setter到重要值)
编辑:
在编辑中指向的情况下,只需将地图的值包装到列表中即可。 HashMap<String,List<MagicContainer>>()
,在添加到地图时,检查相应密钥是否存在,如果存在,只需将您的邮件添加到列表中即可。否则使用新列表创建新密钥。