我有两个下降,一个是街道,另一个是适合。 Street和apt是地址类的属性。我为每个地址都有一个unique_seq_no,所以我将它存储在HashMap中。
LinkedHashMap<String, Address> addressMap = new LinkedHashMap<String, Address >();
Property prop = new Property();
ArrayList<Property> ap = new ArrayList<Property>();
for(Offices of: offList)
{
Address ad = new Address();
ad.setStreet(of.getAdd());
ad.setApt(of.getUnit());
ad.setUnique_seq_no(of.getSequence());
addressMap.put(of.getSequence(),ad);
prop.setAddSeq(of.getSequence());
prop.setAdd(of.getAdd());
ap.add(prop)
}
返回JSON,
[{seq:23456,add:1234 NW st,apt:201},{seq:45678,add:1234 NW st,apt:202},
{seq:57689,add:6785 NW st,apt:203}]
问题, 1.在街道下拉列表中显示重复添加。
我想创建一个以街道为键的地图,以及一个apts列表作为值。由于街道是重复的,我们如何实现这一点。
答案 0 :(得分:0)
在这里,您将了解如何获得所需的解决方案。我相信你是正确的,直到“addressMap”填充了key作为sequenceNo&amp;价值作为“地址”对象,其中包含街道,公寓和序列号。
接下来你需要做的是遍历adressMap&amp;填充另一个地图,它将关键字保存为街道(应该是唯一的)&amp;价值为“公寓一览”。这就是你如何做到这一点。
ArrayList ap = new ArrayList();
for (Offices of : offlist) {
Address ad = new Address();
ad.setStreet(of.getAddress());
ad.setApt(of.getUnit());
ad.setUnique_seq_no(of.getSequence());
addressMap.put(of.getSequence(), ad);
}
HashMap<String,ArrayList<String>> finalMap = new HashMap<String,ArrayList<String>>();
for (Entry<String, Address> entry : addressMap.entrySet()) {
Address address= entry.getValue();
finalMap.put(address.getStreet(),getList(address.getStreet() , finalMap , address.getApt()));
}
“getList”是指如果已存在则将Apartment列表添加到同一街道密钥的方法。
现在你需要在代码下面填充finalMap,其中包含唯一的street作为键和&amp;作为价值的公寓列表。
private static ArrayList<String> getList(String street,HashMap<String,ArrayList<String>> adressMap , String apt){
if(adressMap != null && adressMap.get(street) != null){
ArrayList<String> list = adressMap.get(street);
list.add(apt);
return list;
}else{
ArrayList<String> list = new ArrayList<String>();
list.add(apt);
return list;
}
}
如果将finalMap转换为JSON字符串,下面将是您将看到的字符串格式。
{“678 NW”:[“101”],“124 NW”:[“101”],“1234 NW”:[“102”,“103”]}