比较两个ID以获得更低的ID



我试图比较两个id,以获得ascii中较低的id。ID是字母数字"836778436K""K8474874"。。。。

我试过

lowerSupplyDeliveryTerm.stream()
.map(dto -> dto.provider.nif)
.min(SupplyDto::provider.nif)

SupplyDto类是

public class SupplyDto {
public String id;
public long version;
public SupplierProviderDto provider = new SupplierProviderDto();
public SuppliedSparePartDto sparePart = new SuppliedSparePartDto();
public double price;
public int deliveryTerm;
public static class SupplierProviderDto {
public String id;
public String nif;
public String name;
}
public static class SuppliedSparePartDto {
public String id;
public String code;
public String description;
}
}

问题是,我不知道应该在min函数中引入哪个lambda函数来比较dto中提供者的nif。

提前谢谢。

如果您正在寻找嵌套对象的最小ID,您可以编写如下:

lowerSupplyDeliveryTerm.stream()
.map(dto -> dto.provider.nif)
.min(String::compareTo) // Optional<String> is returned here
.orElse("No minimal nif found")

如果你需要用最小的nif:获得DTO的ID

lowerSupplyDeliveryTerm.stream()
.min(Comparator.comparing(dto -> dto.provider.inf))
.map(dto -> dto.provider.id)
.orElse("No ID for minimal nif found")

如果只想要最低的ID,则不必为min比较器使用任何特殊的lambda。您可以根据元素自己的compareTo方法使用Comparator.naturalOrder()来获得min元素。

String minId = lowerSupplyDeliveryTerm.stream()
.map(dto -> dto.provider.nif)
.min(Comparator.naturalOrder()).get();

最新更新