在java arraylist中查找重复项
我有一个arraylist看起来像这样在java arraylist中查找重复项,java,Java,我有一个arraylist看起来像这样 [week=Mon May 19 00:00:00 EST 2014, projectID=21793, hours=1.5, defaultWorkType=Ps] 我想过滤所有在projectd和week字段上被消磨掉的值 并找出小时数的总和 for an eg: [week=Mon May 19 00:00:00 EST 2014, projectID=21793, hours=1, defaultWorkType=Ps] [week=Mon
[week=Mon May 19 00:00:00 EST 2014, projectID=21793, hours=1.5, defaultWorkType=Ps]
我想过滤所有在projectd和week字段上被消磨掉的值
并找出小时数的总和
for an eg:
[week=Mon May 19 00:00:00 EST 2014, projectID=21793, hours=1, defaultWorkType=Ps]
[week=Mon May 19 00:00:00 EST 2014, projectID=21793, hours=3, defaultWorkType=Ps]
[week=Mon May 19 00:00:00 EST 2014, projectID=21793, hours=2, defaultWorkType=Ps]
所以答案应该是这样的,
[week=Mon May 19 00:00:00 EST 2014, projectID=21793, hours=6, defaultWorkType=Ps]
私有列表查找到的总LPSHRSLIST筛选器DPS{
List<PreSale> li = new ArrayList<PreSale>();
for(Integer i=0 ; i<filteredPS.size();i++)
{
Integer x=0;
while(x<filteredPS.size()){
if(filteredPS.get(i)==filteredPS.get(x++)){
li.add(filteredPS.get(i));
System.out.println("--------------------------"+filteredPS.get(i));
System.out.println("*** "+ filteredPS.get(x++));
}
}
}
return filteredPS;
}
迭代数组列表并将project+weekto添加到哈希映射中,其中值为小时数。如果该键已存在,则只需更新小时数。哈希映射将包含生成所需输出所需的信息 也许是这样的:
private List<PreSale> findTotalPSHrs(List<PreSale> data) {
HashMap<String, Integer> cumulative = new HashMap<String, Integer>();
for (PreSale item : data) {
String key = item.getWeek() + "," + item.getProjectID().toString();
if (cumulative.containsKey(key)) {
cumulative.put(key, cumulative.get(key) + data.getHours());
} else {
cumulative.put(key, data.getHours());
}
}
// at this point, cumulative contains a single entry for each project/week with
// the cumulative hours. Now we need to convert that into your output list.
List<PreSale> returnList = new ArrayList<PreSale>();
for (Map.Entry<String, Integer> entry : cumulative.entrySet()) {
// "<week>,<project>"
String[] parts = entry.getKey().split(",");
PreSale saleObj = new PreSale();
saleObj.setWeek(parts[0]);
saleObj.setProject(Integer.parseInt(parts[1]));
saleObj.setHours(entry.getValue());
returnList.add(saleObj);
}
return returnList;
}
这可能有点过分,但这是我想到的第一件事。你试过什么了吗?输出应该是什么:[week=Mon may 19 00:00:00 EST 2014,projectID=21793,hours=1,defaultWorkType=a][week=Mon may 19 00:00:00 EST 2014,projectID=21793,hours=3,defaultWorkType=B]?arraylist中存储了什么?字符串?用户定义的对象?您的javascript数组减速完全是错误的incorrect@ali-shahrokhi这是一个Java ArrayList,不是JavaScript数组。对我来说这听起来很棒。我只是一个Java新手。有什么线索我可以做到吗?我不知道我可以在哈希图上有2个键。谢谢堆!你非常有帮助;