碰到一个List集合操作的问题,小弟理解甚浅,谢谢!讲解详细点!
以下代码:
[code="java"]public class TestMap {
public static void main(String[] args) {
List<SalesPublicCommissionDetail> salesPublicCommissionDetails = new ArrayList<SalesPublicCommissionDetail>();
salesPublicCommissionDetails.add(new SalesPublicCommissionDetail("2010-05-12","111",23));
salesPublicCommissionDetails.add(new SalesPublicCommissionDetail("2010-05-14","222",44));
salesPublicCommissionDetails.add(new SalesPublicCommissionDetail("2010-05-16","333",88));
salesPublicCommissionDetails.add(new SalesPublicCommissionDetail("2010-05-19","444",55));
salesPublicCommissionDetails.add(new SalesPublicCommissionDetail("2010-05-18","555",23));
salesPublicCommissionDetails.add(new SalesPublicCommissionDetail("2010-05-14","222",44));
salesPublicCommissionDetails.add(new SalesPublicCommissionDetail("2010-05-16","333",88));
salesPublicCommissionDetails.add(new SalesPublicCommissionDetail("2010-05-19","444",55));
salesPublicCommissionDetails.add(new SalesPublicCommissionDetail("2010-05-18","555",23));
Map map = new HashMap();
if (salesPublicCommissionDetails != null && salesPublicCommissionDetails.size() > 0) {
for (int i = 0; i < salesPublicCommissionDetails.size(); i++) {
SalesPublicCommissionDetail detail = (SalesPublicCommissionDetail) salesPublicCommissionDetails.get(i);
String key = detail.getTime()+"_"+ detail.getUserId();
if (map.containsKey(key)) {
SalesPublicCommissionDetail td = new SalesPublicCommissionDetail();
td = (SalesPublicCommissionDetail) map.get(key);
int count = td.getCount()+ detail.getCount();
td.setCount(count);
} else {
map.put(key, detail);
}
}
}
for (SalesPublicCommissionDetail salesPublicCommissionDetail : salesPublicCommissionDetails) {
System.out.println(salesPublicCommissionDetail.getTime()+"_"+salesPublicCommissionDetail.getUserId()+"---->"+salesPublicCommissionDetail.getCount());
}
System.out.println("=============================");
for (Iterator iterator = map.keySet().iterator(); iterator.hasNext();) {
SalesPublicCommissionDetail salesPublicCommissionDetail = (SalesPublicCommissionDetail) map.get(iterator.next());
System.out.println(salesPublicCommissionDetail.getTime()+"_"+salesPublicCommissionDetail.getUserId()+"---->"+salesPublicCommissionDetail.getCount());
}
}
}
class SalesPublicCommissionDetail{
public SalesPublicCommissionDetail(){
}
public SalesPublicCommissionDetail(String time, String userId, int count) {
super();
this.time = time;
this.userId = userId;
this.count = count;
}
private String time;
private String userId;
private int count ;
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
[/code]
结果:
[code="java"]
2010-05-12_111---->23
2010-05-14_222---->88
2010-05-16_333---->176
2010-05-19_444---->110
2010-05-18_555---->46
2010-05-14_222---->44
2010-05-16_333---->88
2010-05-19_444---->55
2010-05-18_555---->23
2010-05-12_111---->23
2010-05-16_333---->176
2010-05-14_222---->88
2010-05-19_444---->110
2010-05-18_555---->46
[/code]
请问为什么list中的值被改变了? 前五个和map中的值是一样的,不懂!