如果list中的对像的编号和时间相同就把对像合并,并将数量相加
__小羊 2018-11-02 01:58:18 贴上代码:
public class Test1 {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
Student stu = new Student();
stu.setId("1");
stu.setName("張三");
stu.setPrice(12.5);
stu.setNumber(5.0);
stu.setDate("2018-11-01");
list.add(stu);
Student stu1 = new Student();
stu1.setId("2");
stu1.setName("李四");
stu1.setPrice(20.0);
stu1.setNumber(3.0);
stu1.setDate("2018-11-01");
list.add(stu1);
Student stu2 = new Student();
stu2.setId("1");
stu2.setName("張三");
stu2.setPrice(15.3);
stu2.setNumber(9.0);
stu2.setDate("2018-11-01");
list.add(stu2);
Student stu3 = new Student();
stu3.setId("3");
stu3.setName("王二");
stu3.setPrice(0.3);
stu3.setNumber(7.0);
stu3.setDate("2018-11-01");
list.add(stu3);
Student stu4 = new Student();
stu4.setId("1");
stu4.setName("張三");
stu4.setPrice(7.3);
stu4.setNumber(7.0);
stu4.setDate("2018-11-04");
list.add(stu4);
//相同ID 相同 date 的 number、price 做累加
//想要的效果如下:
//{"name":"張三","number":"14.0","id":"1","price":"27.8","date":"2018-11-01"},
//{"name":"王二","number":"7.0","id":"3","price":"0.3","date":"2018-11-01"},
//{"name":"李四","number":"3.0","id":"2","price":"20.0","date":"2018-11-01"},
//{"name":"張三","number":"7.0","id":"1","price":"7.3","date":"2018-11-04"}
/****************************************************************************/
Map<String, Student> map = new HashMap<String, Student>();
for (Student s : list) {
if (map.containsKey(s.getId())) {
Student st = map.get(s.getId());
st.setPrice(st.getPrice() + s.getPrice());
st.setNumber(st.getNumber() + s.getNumber());
map.put(s.getId(), st);
} else {
map.put(s.getId(), s);
}
}
for (Entry<String, Student> s : map.entrySet()) {
System.out.println(s.getKey() +"===========>>"+s.getValue());
}
//现在的效果 只区分了ID 时间没有区分
//1===========>>Student [id=1, name=張三, price=35.1, number=21.0, date=2018-11-01]
//2===========>>Student [id=2, name=李四, price=20.0, number=3.0, date=2018-11-01]
//3===========>>Student [id=3, name=王二, price=0.3, number=7.0, date=2018-11-01]
/****************************************************************************/
}
static class Student{
private String id;
private String name;
private Double price;
private Double number;
private String date;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Double getNumber() {
return number;
}
public void setNumber(Double number) {
this.number = number;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", price=" + price + ", number=" + number + ", date=" + date
+ "]";
}
}
}