学习使用查找最小和最大日期,数字,字符,字符串或对象。
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或字符串。
我们还学会了从对象流中按对象属性找到最大对象 。
在评论中把您的问题交给我。