巧用Comparator进行对象的属性合并

巧用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);
    }

    }
}

完美实现效果,精炼

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值