方法一:冒泡排序
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); } }