java list find方法_Java 8 Stream - Find Max and Min from List - 入门小站-rumenz.com

学习使用查找最小和最大日期,数字,字符,字符串或对象。

Find Min or Max Date

要从日期流中获取最大或最小日期 ,可以使用Comparator.comparing( LocalDate::toEpochDay )比较器。 1970-01-01 。LocalDate start = LocalDate.now();

LocalDate end = LocalDate.now().plusMonths(1).with(TemporalAdjusters.lastDayOfMonth());

//Create stream of dates

List dates = Stream.iterate(start, date -> date.plusDays(1))

.limit(ChronoUnit.DAYS.between(start, end))

.collect(Collectors.toList());

// Get Min or Max Date

LocalDate maxDate = dates.stream()

.max( Comparator.comparing( LocalDate::toEpochDay ) )

.get();

LocalDate minDate = dates.stream()

.min( Comparator.comparing( LocalDate::toEpochDay ) )

.get();

System.out.println("maxDate = " + maxDate);

System.out.println("minDate = " + minDate);

Program Output.maxDate = 2017-10-30

minDate = 2017-09-13

使用上述程序从日期列表中查找最早的日期或最晚的日期。

Find Min or Max Number

要从数字流中找到最小和最大数字,请使用Comparator.comparing( Integer::valueOf )像比较器一样。 以下示例是整数流的示例。// Get Min or Max Number

Integer maxNumber = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9)

.max(Comparator.comparing(Integer::valueOf))

.get();

Integer minNumber = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9)

.min(Comparator.comparing(Integer::valueOf))

.get();

System.out.println("maxNumber = " + maxNumber);

System.out.println("minNumber = " + minNumber);

Program Output.

maxNumber = 9

minNumber = 1

Find Min or Max char or String

要从字符流中查找最小和最大字符串或字符 ,请像比较器一样使用Comparator.comparing( String::valueOf ) 。// Get Min or Max String/Char

String maxChar = Stream.of("H", "T", "D", "I", "J")

.max(Comparator.comparing(String::valueOf))

.get();

String minChar = Stream.of("H", "T", "D", "I", "J")

.min(Comparator.comparing(String::valueOf))

.get();

System.out.println("maxChar = " + maxChar);

System.out.println("minChar = " + minChar);

Program Output.maxChar = T

minChar = D

Find Min or Max Object by key

Object comparison创建自己的custom comparator 。 例如,如果我想从Employee对象流中获取最年轻的Employee ,那么我的比较器将类似于Comparator.comparing(Employee::getAge) 。 现在使用此比较器获取最大或最小员工对象。

Java程序可根据年龄查找最大或最小员工对象。List employees = new ArrayList();

employees.add(new Employee(1, "Lokesh", 36));

employees.add(new Employee(2, "Alex", 46));

employees.add(new Employee(3, "Brian", 52));

Comparator comparator = Comparator.comparing( Employee::getAge );

// Get Min or Max Object

Employee minObject = employees.stream().min(comparator).get();

Employee maxObject = employees.stream().max(comparator).get();

System.out.println("minObject = " + minObject);

System.out.println("maxObject = " + maxObject);

Program Output.minObject = Id:- 1 Name:- Lokesh Age:- 36

maxObject = Id:- 3 Name:- Brian Age:- 52

Employee对象是:class Employee {

private int id;

private String name;

private int age;

public Employee(int id, String name, int age) {

super();

this.id = id;

this.name = name;

this.age = age;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

StringBuilder str = null;

str = new StringBuilder();

str.append("Id:- " + getId() + " Name:- " + getName() + " Age:- " + getAge());

return str.toString();

}

}

在本教程中,我们学习了使用Java 8 lambda expression 从原始值流中查找最大值或最小值 。 我们还学会了查找最大或最小对象,例如max Date或字符串。

我们还学会了从对象流中按对象属性找到最大对象 。

在评论中把您的问题交给我。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值