巧用Comparator进行对象的属性合并
今天同事问我一个问题,怎么把对象中的属性合并了,我就说用comparator接口啊,然后利用Collections.sort(list,compartor);
来实现,合并,好了,啥都不多说,上代码
这个是自定义对象
public class OrderItem {
private String sn;
private int quantity;
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
@Override
public String toString() {
return "OrderItem [quantity=" + quantity + ", sn=" + sn + "]";
}
}
2.这个是自定义的比较器接口实现类
import java.util.Comparator;
public class OrderQuantityADD implements Comparator<OrderItem> {
@Override
public int compare(OrderItem o1, OrderItem o2) {
if(o1.getSn().equals(o2.getSn())){
int comm = o1.getQuantity()+o2.getQuantity();
o1.setQuantity(comm);
o2.setQuantity(comm);
}
return 0;
}
}
3.测试类,
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class OrderItemTest {
public static void main(String[] args) {
List<OrderItem> lists = new ArrayList<OrderItem>();
OrderItem a = new OrderItem();
a.setQuantity(1);
a.setSn("111");
OrderItem b = new OrderItem();
b.setQuantity(2);
b.setSn("111");
OrderItem c = new OrderItem();
c.setQuantity(1);
c.setSn("222");
OrderItem d = new OrderItem();
d.setQuantity(1);
d.setSn("333");
lists.add(a);
lists.add(b);
lists.add(c);
lists.add(d);
OrderQuantityADD co = new OrderQuantityADD();
Collections.sort(lists, co);
for (OrderItem orderItem : lists) {
System.out.println(orderItem);
}
}
}
完美实现效果,精炼