我想以这样的方式准备HashMap
Key : Country Code
Value : List of returned orderEntries
以下流程数据方法流程每5 orderEntry
可以来自任何国家/地区。
让我说清楚一点。我有来自不同国家/地区的orderEntries
列表,现在我想根据国家/地区密钥将这些条目放入map
。比如,来自US
然后US
的20个条目将成为关键,而20个条目将成为值。但问题是我不想为map
内的每个县创建一个列表。
public void processSegmentData(final List resultSet)
{
for (final Object orderEntry : resultSet)
{
if (orderEntry instanceof OrderEntryModel)
{
String countryCode = null;
final OrderModel order = ((OrderEntryModel) orderEntry).getOrder();
if (order.getDeliveryAddress() != null)
{
countryCode = order.getDeliveryAddress().getCountry().getIsocode();
}
orderEntriesMap.put(Config.getParameter(countryCode+".return.pid"), orderEntries);
}
}
}
答案 0 :(得分:1)
所以你是在一个包含链表的hashmap之后的东西:
public HashMap<String, LinkedList<OrderEntryModel>> processSegmentData(final List resultSet) {
HashMap<String, LinkedList<OrderEntryModel>> orderEntriesMap = new HashMap<String, LinkedList<OrderEntryModel>>();
for (final Object orderEntry : resultSet) {
if (orderEntry instanceof OrderEntryModel) {
String countryCode = null;
final OrderModel order = ((OrderEntryModel) orderEntry).getOrder();
if (order.getDeliveryAddress() != null) {
countryCode = order.getDeliveryAddress().getCountry().getIsocode();
}
if (!orderEntriesMap.containsKey(countryCode)) {
orderEntriesMap.put(countryCode, new LinkedList<OrderEntryModel>());
}
orderEntriesMap.get(countryCode).add((OrderEntryModel) orderEntry);
}
}
return orderEntriesMap;
}
将基于您提供的猜测对象名称的源代码示例。
答案 1 :(得分:1)
只需创建一个Map<String,List<String>>
。并遵循以下方法
Map<String,List<String>> countryMap = new HashMap<String, List<String>>();
for (final String orderEntry : orders){
if(countryMap.containsKey(orderEntry.getCountry())){
countryMap.get(orderEntry.getCountry()).add(orderEntry);
}else{
//create a new list and add orderEntry
countryMap.put(orderEntry.getCountry(),orderEntry);
}
}
你需要根据你的东西修改它
答案 2 :(得分:1)
但问题是我不想为每个县创建一个列表 在地图内。
我了解您的问题,但map
存储了唯一的key
,您无法存储相同的国家/地区代码。
您必须使用Map<String, List<String>>()
将country code
作为key
,然后将您的值放在List<String>
内。
执行此操作后如果您遇到任何问题,编辑您的问题将有助于您解决此问题。
答案 3 :(得分:0)
您可以使用Guava's Multimap
来简化操作。 Multimap
允许您针对单个密钥存储多个条目,例如:
Multimap<String, OrderEntry> orderEntriesMultimap = HashMultimap.create();
for (final Object orderEntry : resultSet) {
// omitted...
orderEntriesMultimap.put(Config.getParameter(countryCode+".return.pid"), orderEntry);
}
然后,您可以按键检索所有关联的值:
Collection<OrderEntryModel> entries = orderEntriesMultimap.get(key);