java - Angular : How to sort List of Objects by property?

标签 java angular typescript sorting

在java中我们可以使用Comparable接口(interface)来按字段对对象进行排序。就像下面的例子一样,我们根据数量对水果进行排序

public class Fruit implements Comparable<Fruit>{

    private String fruitName;
    private String fruitDesc;
    private int quantity;

    public Fruit(String fruitName, String fruitDesc, int quantity) {
        this.fruitName = fruitName;
        this.fruitDesc = fruitDesc;
        this.quantity = quantity;
    }

    public String getFruitName() {
        return fruitName;
    }
    public void setFruitName(String fruitName) {
        this.fruitName = fruitName;
    }
    public String getFruitDesc() {
        return fruitDesc;
    }
    public void setFruitDesc(String fruitDesc) {
        this.fruitDesc = fruitDesc;
    }
    public int getQuantity() {
        return quantity;
    }
    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public int compareTo(Fruit compareFruit) {

        int compareQuantity = ((Fruit) compareFruit).getQuantity(); 
        return this.quantity - compareQuantity;

    }   
}

我想知道是否有任何方法可以在 Angular(Typescript) 中实现这种实现?

export class Fruit {
    fruitName: string;
    fruitDesc: string;
    quantity: number;

    constructor() {}
}

最佳答案

操作与java类似,但不需要使用接口(interface)。如果您希望水果具有可比性,请实现该方法。从结构上讲,编译器不会进行检查,但在运行时它将起作用:

compareTo(compareFruit: Fruit): int {
    return this.quantity - compareFruit.quantity;
}

但是它的发生与 Java 中一样。要在 Java 中对数组进行排序,您可以使用集合的排序方法,并且可以传递比较器。在 typescript 中排序元素的方式是相同的。调用集合的排序方法,并将比较器方法作为参数传递。这是一个例子:

let fruits = [];
fruits.push(new Fruit(...));
fruits.push(new Fruit(...));
fruits.push(new Fruit(...));
fruits.push(new Fruit(...));

fruits.sort((fruitA, fruitB) => fruitB.quantity - fruitA.quantity);

关于java - Angular : How to sort List of Objects by property?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56114683/

相关文章:

Angular - [(ngModel)] vs [ngModel] vs (ngModel)

javascript - 将外部 javaScript 函数调用到 XSLT 文件中

java - MyBatis - Mapped Statements 集合已经包含值

angular - 找不到名称 'environment'。在 Angular 7

Angular 6 - 如何在单元测试中模拟 router.events url 响应

generics - 我可以使用 function.call() 调用通用函数吗?

typescript - 在 inversifyjs 中重置作用域容器

java - 显示对话框的软键盘

java - 无法通过 WildFly 10 运行 Java EE 项目

java - 如何使用 try catch 重试机制为 for 循环编写更短、更高效的代码?