对象集合排序(升序)

发布时间 2023-03-31 11:14:05作者: 疯狂搬砖人

方法一:冒泡排序

public class exam04 {
    public static void main(String[] args) {
        List<ProductOffering> productOfferings = new ArrayList<>();
        productOfferings.add(new ProductOffering("PoCode_001","PoName_001", BigDecimal.valueOf(15)));
        productOfferings.add(new ProductOffering("PoCode_002","PoName_001", BigDecimal.valueOf(10)));
        productOfferings.add(new ProductOffering("PoCode_003","PoName_001", BigDecimal.valueOf(21)));
        productOfferings.add(new ProductOffering("PoCode_004","PoName_001", BigDecimal.valueOf(1)));
        productOfferings.add(new ProductOffering("PoCode_005","PoName_001", BigDecimal.valueOf(45)));
        productOfferings.add(new ProductOffering("PoCode_006","PoName_001", BigDecimal.valueOf(25)));
        productOfferings.add(new ProductOffering("PoCode_007","PoName_001", BigDecimal.valueOf(85)));
        productOfferings.add(new ProductOffering("PoCode_008","PoName_001", BigDecimal.valueOf(125)));
        productOfferings.add(new ProductOffering("PoCode_009","PoName_001", BigDecimal.valueOf(3)));
        List<ProductOffering> offerings = sortSmallToLarge(productOfferings);
        for (ProductOffering offering : offerings) {
            System.out.println(offering);
        }
    }
    public static  List<ProductOffering> sortSmallToLarge(List<ProductOffering> productOfferings){
        for(int i = 0;i<productOfferings.size() - 1;i++){
            for(int j = 0;j < productOfferings.size() - 1 -i;j++){
                if(productOfferings.get(j).getPrice().compareTo(productOfferings.get(j+1).getPrice()) == 1){
                    ProductOffering tempProductOffering = productOfferings.get(j);
                    productOfferings.set(j,productOfferings.get(j+1));
                    productOfferings.set(j+1,tempProductOffering);
                }
            }
        }
        return productOfferings;
    }
}

方法二:排序对象实现Comparable<>接口package com.example.exam02.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProductOffering implements Comparable<ProductOffering>{
    private String pocode;
    private String poname;
    private BigDecimal price;

    @Override
    public int compareTo(ProductOffering o) {
        //升序
     //this.getPrice().compareTo(o.getPrice)升序
     //o.getPrice.compareTo(this.getPrice)降序
return this.getPrice().compareTo(o.getPrice()); } public static void main(String[] args) { List<ProductOffering> productOfferings = new ArrayList<>(); productOfferings.add(new ProductOffering("PoCode_001","PoName_001", BigDecimal.valueOf(15))); productOfferings.add(new ProductOffering("PoCode_002","PoName_001", BigDecimal.valueOf(10))); productOfferings.add(new ProductOffering("PoCode_003","PoName_001", BigDecimal.valueOf(21))); productOfferings.add(new ProductOffering("PoCode_004","PoName_001", BigDecimal.valueOf(1))); productOfferings.add(new ProductOffering("PoCode_005","PoName_001", BigDecimal.valueOf(45))); productOfferings.add(new ProductOffering("PoCode_006","PoName_001", BigDecimal.valueOf(25))); productOfferings.add(new ProductOffering("PoCode_007","PoName_001", BigDecimal.valueOf(85))); productOfferings.add(new ProductOffering("PoCode_008","PoName_001", BigDecimal.valueOf(125))); productOfferings.add(new ProductOffering("PoCode_009","PoName_001", BigDecimal.valueOf(3)));      //调用重写方法 Collections.sort(productOfferings); for (ProductOffering offering : productOfferings) { System.out.println(offering); } } }

方法三:匿名内部类

package com.example.exam02.entity;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class exam04 {
    public static void main(String[] args) {
        List<ProductOffering> productOfferings = new ArrayList<>();
        productOfferings.add(new ProductOffering("PoCode_001","PoName_001", BigDecimal.valueOf(15)));
        productOfferings.add(new ProductOffering("PoCode_002","PoName_001", BigDecimal.valueOf(10)));
        productOfferings.add(new ProductOffering("PoCode_003","PoName_001", BigDecimal.valueOf(21)));
        productOfferings.add(new ProductOffering("PoCode_004","PoName_001", BigDecimal.valueOf(1)));
        productOfferings.add(new ProductOffering("PoCode_005","PoName_001", BigDecimal.valueOf(45)));
        productOfferings.add(new ProductOffering("PoCode_006","PoName_001", BigDecimal.valueOf(25)));
        productOfferings.add(new ProductOffering("PoCode_007","PoName_001", BigDecimal.valueOf(85)));
        productOfferings.add(new ProductOffering("PoCode_008","PoName_001", BigDecimal.valueOf(125)));
        productOfferings.add(new ProductOffering("PoCode_009","PoName_001", BigDecimal.valueOf(3)));
      //匿名内部类实现排序
        Collections.sort(productOfferings, new Comparator<ProductOffering>() {
            @Override
            public int compare(ProductOffering o1, ProductOffering o2) {
                return o1.getPrice().compareTo(o2.getPrice());
            }
        });
     for (ProductOffering offering : productOfferings) {
            System.out.println(offering);
        }
}