gpt4 book ai didi

java - 如何为相似的行添加 Arraylist 项

转载 作者:行者123 更新时间:2023-12-01 11:00:22 25 4
gpt4 key购买 nike

我有一个 SearchListPojo 类型的动态 Arraylist sList,它具有区域、位置和数量属性。可以有 n 个具有相似面积和位置的项目。我想检索并添加具有相似区域和位置的项目的相应数量。

我的搜索列表Pojo:

public class SearchListPojo 
{
String area, location, quantity;

public String getQuantity() {
return quantity;
}

public void setQuantity(String quantity) {
this.quantity = quantity;
}

public String getLocation() {
return location;
}

public int compareTo(SearchList o2) {
// TODO Auto-generated method stub
return 1;
}

public void setLocation(String location) {
this.location = location;
}

public String getArea() {
return area;
}

public void setArea(String area) {
this.area = area;
}

@Override
public boolean equals(Object o) {

if (o == null || !(o instanceof SearchList))
return false;
return ((SearchList) o).area.equals(this.area)
&& ((SearchList) o).location.equals(this.location);

}

@Override
public String toString() {
return "SearchList [area=" + area + ", location=" + location + "]";
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((area == null) ? 0 : area.hashCode());
result = prime * result
+ ((location == null) ? 0 : location.hashCode());
return result;
}
}

假设有 5 项:

 [area=Area1, location=Location1, quantity=3], 
[area=Area1, location=Location1, quantity=7],
[area=Area3, location=Location2, quantity=2],
[area=Area3, location=Location2, quantity=22],
[area=Area3, location=Location1, quantity=10]

添加类似商品的数量后,列表应为:

[area=Area1, location=Location1, quantity=10],  
[area=Area3, location=Location2, quantity=24],
[area=Area3, location=Location1, quantity=10]

如何比较列表 sList 的每一行并添加相似项目的数量?

最佳答案

我会尝试按照以下方式进行操作。我使用 Map ,其键实际上是区域和位置的组合。对于每个独特的区域/位置对,我都会保留数量的总和,最后我将这些信息打印到控制台。

Map<String, Integer> countMap = new HashMap<String, Integer>();

for (SearchListPojo slp : sList) {
String key = slp.getArea() + "-" + slp.getLocation();
int quantity = Integer.parseInt(slp.getQuantity());
int total = countMap.get(key) != null ? countMap.get(key) : 0;
total += quantity;

countMap.put(key, total);
}

// this for loop iterates over the Map and prints out the quantities
// for similar items
for (Map.Entry<String, Integer> entry : countMap.entrySet()) {
String areaName = entry.getKey().split("-")[0];
String locationName = entry.getKey().split("-")[1];
Integer quantity = entry.getValue();

System.out.print("area=" + areaName + ", ");
System.out.print("location=" + locationName + ", ");
System.out.print("quantity=" + quantity);
}

顺便说一句,您正在执行的操作与 SQL 可以处理的 GROUP BY 操作非常相似。话虽这么说,如果您的 SearchListPojo 对象最终来自数据层,那么您最好在那里完成这项繁重的工作。

关于java - 如何为相似的行添加 Arraylist 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33383661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com