raozhiyong11 2012-05-29 14:07
浏览 106

java list 集合类问题

碰到一个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中的值是一样的,不懂!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 sub地址DHCP问题
    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办
    • ¥15 kylin启动报错log4j类冲突
    • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大