分组值并在java中创建hashmap或列表

时间:2013-10-01 12:22:25

标签: java list loops hashmap

抱歉提出另一个非常明显的问题

我有一个以下字符串:

{
 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}
    }
}

我希望将它们分组到HashMapArrayList 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我该怎么办?

2 个答案:

答案 0 :(得分:1)

创建一个Transactions课程。拥有所有变量和相应的getter和setter。覆盖您.equals().hashCode()方法。

至于HashMapList之间的选择,我建议选择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>>(),在添加到地图时,检查相应密钥是否存在,如果存在,只需将您的邮件添加到列表中即可。否则使用新列表创建新密钥。