准备多值国家地图
prepare a multi valued country map
我想准备 HashMap
这样
Key : Country Code
Value : List of returned orderEntries
以下过程数据方法每 5 个 orderEntry
处理一次,可以来自任何国家。
让我说得更清楚。我有来自不同国家/地区的 orderEntries
列表,现在我想根据国家键将这些条目放入 map
中。就像如果来自 US
的 20 个条目,那么 US
将是键,而 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);
}
}
}
所以你正在寻找一个包含链表的哈希图 类似于:
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;
}
将是一个基于您提供的猜测对象名称的源代码的示例。
只需创建一个 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);
}
}
这个需要根据你的东西修改
But problem is that I don't want to create a list for each county
inside map.
我理解你的问题,但是 map
存储唯一 key
,你不能存储相同的国家代码。
您必须使用 Map<String, List<String>>()
将您的 country code
保存为 key
,然后将您的值放入 List<String>
.
执行此操作后,如果您有任何问题,编辑您的问题将帮助您解决问题。
您可以使用 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);
我想准备 HashMap
这样
Key : Country Code
Value : List of returned orderEntries
以下过程数据方法每 5 个 orderEntry
处理一次,可以来自任何国家。
让我说得更清楚。我有来自不同国家/地区的 orderEntries
列表,现在我想根据国家键将这些条目放入 map
中。就像如果来自 US
的 20 个条目,那么 US
将是键,而 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);
}
}
}
所以你正在寻找一个包含链表的哈希图 类似于:
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;
}
将是一个基于您提供的猜测对象名称的源代码的示例。
只需创建一个 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);
}
}
这个需要根据你的东西修改
But problem is that I don't want to create a list for each county inside map.
我理解你的问题,但是 map
存储唯一 key
,你不能存储相同的国家代码。
您必须使用 Map<String, List<String>>()
将您的 country code
保存为 key
,然后将您的值放入 List<String>
.
执行此操作后,如果您有任何问题,编辑您的问题将帮助您解决问题。
您可以使用 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);